From 1843bdbfceb3b2fef8f5e5b87528907b139a0fe0 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Mon, 27 May 2024 22:12:06 -0700 Subject: [PATCH] refactor(vm): cleanup, trait docs, reenable interpreter tests --- Cargo.lock | 1 + ic10emu/Cargo.toml | 7 + ic10emu/src/errors.rs | 25 +- ic10emu/src/grammar.rs | 3 +- ic10emu/src/interpreter.rs | 252 +- ic10emu/src/interpreter/instructions.rs | 8 +- ic10emu/src/network.rs | 9 +- ic10emu/src/vm.rs | 223 +- ic10emu/src/vm/instructions.rs | 5 +- ic10emu/src/vm/instructions/codegen.rs | 2 + .../vm/instructions/{ => codegen}/enums.rs | 17 +- .../vm/instructions/{ => codegen}/traits.rs | 14 + ic10emu/src/vm/instructions/operands.rs | 18 +- ic10emu/src/vm/object.rs | 12 +- ic10emu/src/vm/object/errors.rs | 6 +- ic10emu/src/vm/object/generic/macros.rs | 65 + ic10emu/src/vm/object/generic/structs.rs | 19 +- ic10emu/src/vm/object/generic/traits.rs | 5 +- ic10emu/src/vm/object/humans.rs | 3 +- ic10emu/src/vm/object/macros.rs | 2 + ic10emu/src/vm/object/stationpedia.rs | 6 +- .../structs/integrated_circuit.rs | 15 +- ic10emu/src/vm/object/templates.rs | 94 +- ic10emu/src/vm/object/traits.rs | 157 +- stationeers_data/src/database/prefab_map.rs | 100266 +++++++-------- stationeers_data/src/enums/basic.rs | 71 +- stationeers_data/src/enums/prefabs.rs | 17 +- stationeers_data/src/enums/script.rs | 26 +- stationeers_data/src/templates.rs | 108 +- xtask/src/generate.rs | 46 +- xtask/src/generate/database.rs | 17 +- xtask/src/generate/enums.rs | 3 +- xtask/src/generate/instructions.rs | 6 +- 33 files changed, 50351 insertions(+), 51177 deletions(-) create mode 100644 ic10emu/src/vm/instructions/codegen.rs rename ic10emu/src/vm/instructions/{ => codegen}/enums.rs (99%) rename ic10emu/src/vm/instructions/{ => codegen}/traits.rs (99%) diff --git a/Cargo.lock b/Cargo.lock index e3c5721..360d031 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -688,6 +688,7 @@ dependencies = [ "color-eyre", "const-crc32", "getrandom", + "ic10emu", "itertools", "macro_rules_attribute", "paste", diff --git a/ic10emu/Cargo.toml b/ic10emu/Cargo.toml index d8e453c..2c71833 100644 --- a/ic10emu/Cargo.toml +++ b/ic10emu/Cargo.toml @@ -45,5 +45,12 @@ time = { version = "0.3.36", features = [ color-eyre = "0.6.3" serde_json = "1.0.117" +# Self dev dependency to enable prefab_database feature for tests +ic10emu = { path = ".", features = ["prefab_database"] } + [features] +default = [] tsify = ["dep:tsify", "dep:wasm-bindgen", "stationeers_data/tsify"] +prefab_database = [ + "stationeers_data/prefab_database", +] # compile with the prefab database enabled diff --git a/ic10emu/src/errors.rs b/ic10emu/src/errors.rs index 90e90a4..aaa3cb2 100644 --- a/ic10emu/src/errors.rs +++ b/ic10emu/src/errors.rs @@ -16,15 +16,12 @@ use tsify::Tsify; use wasm_bindgen::prelude::*; #[derive(Error, Debug, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum VMError { #[error("device with id '{0}' does not exist")] - UnknownId(u32), + UnknownId(ObjectID), #[error("ic with id '{0}' does not exist")] - UnknownIcId(u32), - #[error("device with id '{0}' does not have a ic slot")] - NoIC(u32), + UnknownIcId(ObjectID), #[error("ic encountered an error: {0}")] ICError(#[from] ICError), #[error("ic encountered an error: {0}")] @@ -49,6 +46,10 @@ pub enum VMError { NotAnItem(ObjectID), #[error("object {0} is not programmable")] NotProgrammable(ObjectID), + #[error("object {0} is not a circuit holder or programmable")] + NotCircuitHolderOrProgrammable(ObjectID), + #[error("object {0} is a circuit holder but there is no programmable ic present")] + NoIC(ObjectID), #[error("{0}")] TemplateError(#[from] TemplateError), #[error("missing child object {0}")] @@ -58,8 +59,7 @@ pub enum VMError { } #[derive(Error, Debug, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum TemplateError { #[error("object id {0} has a non conforming set of interfaces")] NonConformingObject(ObjectID), @@ -77,8 +77,7 @@ pub enum TemplateError { } #[derive(Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct LineError { pub error: ICError, pub line: u32, @@ -93,8 +92,7 @@ impl Display for LineError { impl StdError for LineError {} #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ParseError { pub line: usize, pub start: usize, @@ -147,8 +145,7 @@ impl ParseError { } #[derive(Debug, Error, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum ICError { #[error("error compiling code: {0}")] ParseError(#[from] ParseError), diff --git a/ic10emu/src/grammar.rs b/ic10emu/src/grammar.rs index c440dad..2d4272f 100644 --- a/ic10emu/src/grammar.rs +++ b/ic10emu/src/grammar.rs @@ -1,5 +1,5 @@ use crate::{ - errors::{ParseError}, + errors::ParseError, interpreter, tokens::{SplitConsecutiveIndicesExt, SplitConsecutiveWithIndices}, vm::instructions::{ @@ -14,7 +14,6 @@ use stationeers_data::enums::{ script::{LogicBatchMethod, LogicReagentMode, LogicSlotType, LogicType}, }; use std::{fmt::Display, str::FromStr}; -use strum::IntoEnumIterator; pub fn parse(code: &str) -> Result, ParseError> { code.lines() diff --git a/ic10emu/src/interpreter.rs b/ic10emu/src/interpreter.rs index 349d9ab..3050af9 100644 --- a/ic10emu/src/interpreter.rs +++ b/ic10emu/src/interpreter.rs @@ -23,8 +23,7 @@ use crate::{ pub mod instructions; #[derive(Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum ICState { Start, Running, @@ -39,8 +38,7 @@ pub enum ICState { } #[derive(Clone, Debug, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ICInfo { pub instruction_pointer: u32, pub registers: Vec, @@ -74,8 +72,7 @@ impl Display for ICState { } #[derive(Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct Program { pub instructions: Vec, pub errors: Vec, @@ -214,87 +211,166 @@ pub fn i64_to_f64(i: i64) -> f64 { #[cfg(test)] mod tests { + use std::rc::Rc; - // static INIT: std::sync::Once = std::sync::Once::new(); - // - // fn setup() { - // INIT.call_once(|| { - // let _ = color_eyre::install(); - // }) - // } - // - // #[test] - // fn batch_modes() -> color_eyre::Result<()> { - // setup(); - // let mut vm = VM::new(); - // let ic = vm.add_ic(None).unwrap(); - // let ic_id = { - // let device = vm.devices.get(&ic).unwrap(); - // let device_ref = device.borrow(); - // device_ref.ic.unwrap() - // }; - // let ic_chip = vm.circuit_holders.get(&ic_id).unwrap().borrow(); - // vm.set_code( - // ic, - // r#"lb r0 HASH("ItemActiveVent") On Sum - // lb r1 HASH("ItemActiveVent") On Maximum - // lb r2 HASH("ItemActiveVent") On Minimum"#, - // )?; - // vm.step_ic(ic, false)?; - // let r0 = ic_chip.get_register(0, 0).unwrap(); - // assert_eq!(r0, 0.0); - // vm.step_ic(ic, false)?; - // let r1 = ic_chip.get_register(0, 1).unwrap(); - // assert_eq!(r1, f64::NEG_INFINITY); - // vm.step_ic(ic, false)?; - // let r2 = ic_chip.get_register(0, 2).unwrap(); - // assert_eq!(r2, f64::INFINITY); - // Ok(()) - // } - // - // #[test] - // fn stack() -> color_eyre::Result<()> { - // setup(); - // let mut vm = VM::new(); - // let ic = vm.add_ic(None).unwrap(); - // let ic_id = { - // let device = vm.devices.get(&ic).unwrap(); - // let device_ref = device.borrow(); - // device_ref.ic.unwrap() - // }; - // let ic_chip = vm.circuit_holders.get(&ic_id).unwrap().borrow(); - // vm.set_code( - // ic, - // r#"push 100 - // push 10 - // pop r0 - // push 1000 - // peek r1 - // poke 1 20 - // pop r2 - // "#, - // )?; - // vm.step_ic(ic, false)?; - // let stack0 = ic_chip.peek_addr(0.0)?; - // assert_eq!(stack0, 100.0); - // vm.step_ic(ic, false)?; - // let stack1 = ic_chip.peek_addr(1.0)?; - // assert_eq!(stack1, 10.0); - // vm.step_ic(ic, false)?; - // let r0 = ic_chip.get_register(0, 0).unwrap(); - // assert_eq!(r0, 10.0); - // vm.step_ic(ic, false)?; - // let stack1 = ic_chip.peek_addr(1.0)?; - // assert_eq!(stack1, 1000.0); - // vm.step_ic(ic, false)?; - // let r1 = ic_chip.get_register(0, 1).unwrap(); - // assert_eq!(r1, 1000.0); - // vm.step_ic(ic, false)?; - // let stack1 = ic_chip.peek_addr(1.0)?; - // assert_eq!(stack1, 20.0); - // vm.step_ic(ic, false)?; - // let r2 = ic_chip.get_register(0, 2).unwrap(); - // assert_eq!(r2, 20.0); - // Ok(()) - // } + use stationeers_data::enums::prefabs::StationpediaPrefab; + + use crate::vm::{ + object::{ + templates::{FrozenObject, ObjectInfo, Prefab}, + ObjectID, + }, + VM, + }; + + static INIT: std::sync::Once = std::sync::Once::new(); + + fn setup() -> color_eyre::Result<(Rc, ObjectID, ObjectID)> { + INIT.call_once(|| { + let _ = color_eyre::install(); + }); + + println!("building VM"); + let vm = VM::new(); + + println!("VM built"); + + let frozen_ic = FrozenObject { + obj_info: ObjectInfo::with_prefab(Prefab::Hash( + StationpediaPrefab::ItemIntegratedCircuit10 as i32, + )), + database_template: true, + template: None, + }; + + println!("Adding IC"); + let ic = vm.add_object_from_frozen(frozen_ic)?; + let frozen_circuit_holder = FrozenObject { + obj_info: ObjectInfo::with_prefab(Prefab::Hash( + StationpediaPrefab::StructureCircuitHousing as i32, + )), + database_template: true, + template: None, + }; + println!("Adding circuit holder"); + let ch = vm.add_object_from_frozen(frozen_circuit_holder)?; + println!("socketing ic into circuit holder"); + vm.set_slot_occupant(ch, 0, Some(ic), 1)?; + Ok((vm, ch, ic)) + } + + #[test] + fn batch_modes() -> color_eyre::Result<()> { + let (vm, ch, ic) = setup()?; + eprintln!("Beginning batch mode test"); + let ic_chip = vm.get_object(ic).unwrap(); + let circuit_holder = vm.get_object(ch).unwrap(); + eprintln!("IC Chip: {ic_chip:?}"); + eprintln!("Circuit Holder: {circuit_holder:?}"); + vm.set_code( + ic, + r#"lb r0 HASH("ItemActiveVent") On Sum + lb r1 HASH("ItemActiveVent") On Maximum + lb r2 HASH("ItemActiveVent") On Minimum"#, + )?; + vm.step_programmable(ic, false)?; + let r0 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_register(0, 0) + .unwrap(); + assert_eq!(r0, 0.0); + vm.step_programmable(ic, false)?; + let r1 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_register(0, 1) + .unwrap(); + assert_eq!(r1, f64::NEG_INFINITY); + vm.step_programmable(ic, false)?; + let r2 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_register(0, 2) + .unwrap(); + assert_eq!(r2, f64::INFINITY); + Ok(()) + } + + #[test] + fn stack() -> color_eyre::Result<()> { + let (vm, ch, ic) = setup()?; + eprintln!("Beginning stack test"); + let ic_chip = vm.get_object(ic).unwrap(); + let circuit_holder = vm.get_object(ch).unwrap(); + eprintln!("IC Chip: {ic_chip:?}"); + eprintln!("Circuit Holder: {circuit_holder:?}"); + vm.set_code( + ic, + r#"push 100 + push 10 + pop r0 + push 1000 + peek r1 + poke 1 20 + pop r2 + "#, + )?; + vm.step_programmable(ic, false)?; + let stack0 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_stack(0.0)?; + assert_eq!(stack0, 100.0); + vm.step_programmable(ic, false)?; + let stack1 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_stack(1.0)?; + assert_eq!(stack1, 10.0); + vm.step_programmable(ic, false)?; + let r0 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_register(0, 0) + .unwrap(); + assert_eq!(r0, 10.0); + vm.step_programmable(ic, false)?; + let stack1 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_stack(1.0)?; + assert_eq!(stack1, 1000.0); + vm.step_programmable(ch, false)?; + let r1 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_register(0, 1) + .unwrap(); + assert_eq!(r1, 1000.0); + vm.step_programmable(ch, false)?; + let stack1 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_stack(1.0)?; + assert_eq!(stack1, 20.0); + vm.step_programmable(ch, false)?; + let r2 = ic_chip + .borrow() + .as_integrated_circuit() + .unwrap() + .get_register(0, 2) + .unwrap(); + assert_eq!(r2, 20.0); + Ok(()) + } } diff --git a/ic10emu/src/interpreter/instructions.rs b/ic10emu/src/interpreter/instructions.rs index 81dd8b4..079f2c6 100644 --- a/ic10emu/src/interpreter/instructions.rs +++ b/ic10emu/src/interpreter/instructions.rs @@ -2124,8 +2124,8 @@ impl ClrInstruction for T { obj_ref .as_mut_memory_writable() .ok_or(MemoryError::NotWriteable)? - .clear_memory() - .map_err(Into::into) + .clear_memory(); + Ok(()) }) })?; Ok(()) @@ -2147,8 +2147,8 @@ impl ClrdInstruction for T { obj_ref .as_mut_memory_writable() .ok_or(MemoryError::NotWriteable)? - .clear_memory() - .map_err(Into::into) + .clear_memory(); + Ok(()) }) })?; Ok(()) diff --git a/ic10emu/src/network.rs b/ic10emu/src/network.rs index f8643ec..3b6c010 100644 --- a/ic10emu/src/network.rs +++ b/ic10emu/src/network.rs @@ -19,8 +19,7 @@ use tsify::Tsify; use wasm_bindgen::prelude::*; #[derive(Debug, Default, Clone, Copy, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum CableConnectionType { Power, Data, @@ -29,8 +28,7 @@ pub enum CableConnectionType { } #[derive(Debug, Default, Clone, Copy, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum Connection { CableNetwork { net: Option, @@ -345,8 +343,7 @@ impl Network for CableNetwork { } #[derive(Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct FrozenCableNetwork { pub id: ObjectID, pub devices: Vec, diff --git a/ic10emu/src/vm.rs b/ic10emu/src/vm.rs index 0595614..e7faa41 100644 --- a/ic10emu/src/vm.rs +++ b/ic10emu/src/vm.rs @@ -73,6 +73,7 @@ struct VMTransaction { } impl VM { + /// Create a new VM with it's own state and a default network pub fn new() -> Rc { let id_space = IdSpace::default(); let mut network_id_space = IdSpace::default(); @@ -102,10 +103,14 @@ impl VM { vm } + /// get a random f64 value using a mscorlib rand PRNG + /// (Stationeers, being written in .net, using mscorlib's rand) pub fn random_f64(&self) -> f64 { self.random.borrow_mut().next_f64() } + /// Take ownership of an iterable the produces (prefab hash, ObjectTemplate) pairs and build a prefab + /// database pub fn import_template_database( &mut self, db: impl IntoIterator, @@ -113,6 +118,7 @@ impl VM { self.template_database.replace(db.into_iter().collect()); } + /// Get a Object Template by either prefab name or hash pub fn get_template(&self, prefab: Prefab) -> Option { let hash = match prefab { Prefab::Hash(hash) => hash, @@ -123,6 +129,9 @@ impl VM { .and_then(|db| db.get(&hash).cloned()) } + /// Add an number of object to the VM state using Frozen Object strusts. + /// See also `add_objects_frozen` + /// Returns the built objects' IDs pub fn add_objects_frozen( self: &Rc, frozen_objects: impl IntoIterator, @@ -175,6 +184,11 @@ impl VM { Ok(obj_ids) } + /// Add an object to the VM state using a frozen object struct + /// Errors if the frozen object does not provide a template and the prefab has is not in the + /// current database. + /// Errors if the object can not be built do to a template error + /// Returns the built object's ID pub fn add_object_from_frozen( self: &Rc, frozen: FrozenObject, @@ -223,6 +237,7 @@ impl VM { Ok(obj_id) } + /// Creates a new network adn return it's ID pub fn add_network(self: &Rc) -> u32 { let next_id = self.network_id_space.borrow_mut().next(); self.networks.borrow_mut().insert( @@ -232,6 +247,7 @@ impl VM { next_id } + /// Get Id of default network pub fn get_default_network(self: &Rc) -> VMObject { self.networks .borrow() @@ -240,12 +256,15 @@ impl VM { .expect("default network not present") } + /// Get network form Id pub fn get_network(self: &Rc, id: u32) -> Option { self.networks.borrow().get(&id).cloned() } - /// iterate over all object borrowing them mutably, never call unless VM is not currently - /// stepping + /// Change an object's ID + /// + /// Iterates over all objects borrowing them mutably, never call unless VM is not currently + /// stepping or you'll get reborrow panics pub fn change_device_id(self: &Rc, old_id: u32, new_id: u32) -> Result<(), VMError> { if self.id_space.borrow().has_id(&new_id) { return Err(VMError::IdInUse(new_id)); @@ -301,6 +320,7 @@ impl VM { } /// Set program code if it's valid + /// Object Id is the programmable Id or the circuit holder's id pub fn set_code(self: &Rc, id: u32, code: &str) -> Result { let obj = self .objects @@ -308,15 +328,34 @@ impl VM { .get(&id) .cloned() .ok_or(VMError::UnknownId(id))?; - let mut obj_ref = obj.borrow_mut(); - let programmable = obj_ref - .as_mut_programmable() - .ok_or(VMError::NotProgrammable(id))?; - programmable.set_source_code(code)?; - Ok(true) + { + let mut obj_ref = obj.borrow_mut(); + if let Some(programmable) = obj_ref.as_mut_programmable() { + programmable.set_source_code(code)?; + return Ok(true); + } + } + let ic_obj = { + let obj_ref = obj.borrow(); + if let Some(circuit_holder) = obj_ref.as_circuit_holder() { + circuit_holder.get_ic() + } else { + return Err(VMError::NotCircuitHolderOrProgrammable(id)); + } + }; + if let Some(ic_obj) = ic_obj { + let mut ic_obj_ref = ic_obj.borrow_mut(); + if let Some(programmable) = ic_obj_ref.as_mut_programmable() { + programmable.set_source_code(code)?; + return Ok(true); + } + return Err(VMError::NotProgrammable(*ic_obj_ref.get_id())); + } + Err(VMError::NoIC(id)) } /// Set program code and translate invalid lines to Nop, collecting errors + /// Object Id is the programmable Id or the circuit holder's id pub fn set_code_invalid(self: &Rc, id: u32, code: &str) -> Result { let obj = self .objects @@ -324,12 +363,30 @@ impl VM { .get(&id) .cloned() .ok_or(VMError::UnknownId(id))?; - let mut obj_ref = obj.borrow_mut(); - let programmable = obj_ref - .as_mut_programmable() - .ok_or(VMError::NotProgrammable(id))?; - programmable.set_source_code_with_invalid(code); - Ok(true) + { + let mut obj_ref = obj.borrow_mut(); + if let Some(programmable) = obj_ref.as_mut_programmable() { + programmable.set_source_code_with_invalid(code); + return Ok(true); + } + } + let ic_obj = { + let obj_ref = obj.borrow(); + if let Some(circuit_holder) = obj_ref.as_circuit_holder() { + circuit_holder.get_ic() + } else { + return Err(VMError::NotCircuitHolderOrProgrammable(id)); + } + }; + if let Some(ic_obj) = ic_obj { + let mut ic_obj_ref = ic_obj.borrow_mut(); + if let Some(programmable) = ic_obj_ref.as_mut_programmable() { + programmable.set_source_code_with_invalid(code); + return Ok(true); + } + return Err(VMError::NotProgrammable(*ic_obj_ref.get_id())); + } + Err(VMError::NoIC(id)) } /// returns a list of device ids modified in the last operations @@ -348,14 +405,36 @@ impl VM { .get(&id) .cloned() .ok_or(VMError::UnknownId(id))?; - let mut obj_ref = obj.borrow_mut(); - let programmable = obj_ref - .as_mut_programmable() - .ok_or(VMError::NotProgrammable(id))?; - self.operation_modified.borrow_mut().clear(); - self.set_modified(id); - programmable.step(advance_ip_on_err)?; - Ok(()) + { + let mut obj_ref = obj.borrow_mut(); + if let Some(programmable) = obj_ref.as_mut_programmable() { + self.operation_modified.borrow_mut().clear(); + self.set_modified(id); + programmable.step(advance_ip_on_err)?; + return Ok(()); + } + } + let ic_obj = { + let obj_ref = obj.borrow(); + if let Some(circuit_holder) = obj_ref.as_circuit_holder() { + circuit_holder.get_ic() + } else { + return Err(VMError::NotCircuitHolderOrProgrammable(id)); + } + }; + + if let Some(ic_obj) = ic_obj { + let mut ic_obj_ref = ic_obj.borrow_mut(); + let ic_id = *ic_obj_ref.get_id(); + if let Some(programmable) = ic_obj_ref.as_mut_programmable() { + self.operation_modified.borrow_mut().clear(); + self.set_modified(ic_id); + programmable.step(advance_ip_on_err)?; + return Ok(()); + } + return Err(VMError::NotProgrammable(ic_id)); + } + Err(VMError::NoIC(id)) } /// returns true if executed 128 lines, false if returned early. @@ -370,28 +449,63 @@ impl VM { .get(&id) .cloned() .ok_or(VMError::UnknownId(id))?; - let mut obj_ref = obj.borrow_mut(); - let programmable = obj_ref - .as_mut_programmable() - .ok_or(VMError::NotProgrammable(id))?; - self.operation_modified.borrow_mut().clear(); - self.set_modified(id); - for _i in 0..128 { - if let Err(err) = programmable.step(ignore_errors) { - if !ignore_errors { - return Err(err.into()); + { + let mut obj_ref = obj.borrow_mut(); + if let Some(programmable) = obj_ref.as_mut_programmable() { + self.operation_modified.borrow_mut().clear(); + self.set_modified(id); + for _i in 0..128 { + if let Err(err) = programmable.step(ignore_errors) { + if !ignore_errors { + return Err(err.into()); + } + } + match programmable.get_state() { + ICState::Yield => return Ok(false), + ICState::Sleep(_then, _sleep_for) => return Ok(false), + ICState::HasCaughtFire => return Ok(false), + ICState::Error(_) if !ignore_errors => return Ok(false), + _ => {} + } } - } - match programmable.get_state() { - ICState::Yield => return Ok(false), - ICState::Sleep(_then, _sleep_for) => return Ok(false), - ICState::HasCaughtFire => return Ok(false), - ICState::Error(_) if !ignore_errors => return Ok(false), - _ => {} + programmable.set_state(ICState::Yield); + return Ok(true); } } - programmable.set_state(ICState::Yield); - Ok(true) + let ic_obj = { + let obj_ref = obj.borrow(); + if let Some(circuit_holder) = obj_ref.as_circuit_holder() { + circuit_holder.get_ic() + } else { + return Err(VMError::NotCircuitHolderOrProgrammable(id)); + } + }; + if let Some(ic_obj) = ic_obj { + let mut ic_obj_ref = ic_obj.borrow_mut(); + let ic_id = *ic_obj_ref.get_id(); + if let Some(programmable) = ic_obj_ref.as_mut_programmable() { + self.operation_modified.borrow_mut().clear(); + self.set_modified(ic_id); + for _i in 0..128 { + if let Err(err) = programmable.step(ignore_errors) { + if !ignore_errors { + return Err(err.into()); + } + } + match programmable.get_state() { + ICState::Yield => return Ok(false), + ICState::Sleep(_then, _sleep_for) => return Ok(false), + ICState::HasCaughtFire => return Ok(false), + ICState::Error(_) if !ignore_errors => return Ok(false), + _ => {} + } + } + programmable.set_state(ICState::Yield); + return Ok(true); + } + return Err(VMError::NotProgrammable(ic_id)); + } + Err(VMError::NoIC(id)) } pub fn set_modified(self: &Rc, id: ObjectID) { @@ -427,13 +541,19 @@ impl VM { .borrow() .iter() .filter(move |(id, device)| { - device.borrow().as_device().is_some_and(|device| { - device - .get_logic(LogicType::PrefabHash) - .is_ok_and(|f| f == prefab_hash) - }) && (name.is_none() - || name.is_some_and(|name| name == device.borrow().get_name().hash as f64)) - && self.devices_on_same_network(&[source, **id]) + if **id == source { + // FIXME: check to make sure this won't cause issues + // if it will pass in a self ref for access + false // exclude source to prevent re-borrow panics + } else { + device.borrow().as_device().is_some_and(|device| { + device + .get_logic(LogicType::PrefabHash) + .is_ok_and(|f| f == prefab_hash) + }) && (name.is_none() + || name.is_some_and(|name| name == device.borrow().get_name().hash as f64)) + && self.devices_on_same_network(&[source, **id]) + } }) .map(|(_, d)| d) .cloned() @@ -856,7 +976,7 @@ impl VM { if let Some(device) = obj.borrow().as_device() { for conn in device.connection_list().iter() { if let Connection::CableNetwork { net: Some(net), .. } = conn { - if let Some(network) = self.networks.borrow().get(&net) { + if let Some(network) = self.networks.borrow().get(net) { network .borrow_mut() .as_mut_network() @@ -1145,7 +1265,7 @@ impl VMTransaction { role: ConnectionRole::None, } = conn { - if let Some(net) = self.networks.get_mut(&net_id) { + if let Some(net) = self.networks.get_mut(net_id) { match typ { CableConnectionType::Power => net.power_only.push(obj_id), _ => net.devices.push(obj_id), @@ -1294,8 +1414,7 @@ impl IdSpace { } #[derive(Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct FrozenVM { pub objects: Vec, pub circuit_holders: Vec, diff --git a/ic10emu/src/vm/instructions.rs b/ic10emu/src/vm/instructions.rs index a980117..e80b328 100644 --- a/ic10emu/src/vm/instructions.rs +++ b/ic10emu/src/vm/instructions.rs @@ -1,6 +1,7 @@ -pub mod enums; +mod codegen; pub mod operands; -pub mod traits; +pub use codegen::enums; +pub use codegen::traits; use enums::InstructionOp; use operands::Operand; diff --git a/ic10emu/src/vm/instructions/codegen.rs b/ic10emu/src/vm/instructions/codegen.rs new file mode 100644 index 0000000..b5dcdc5 --- /dev/null +++ b/ic10emu/src/vm/instructions/codegen.rs @@ -0,0 +1,2 @@ +pub mod traits; +pub mod enums; diff --git a/ic10emu/src/vm/instructions/enums.rs b/ic10emu/src/vm/instructions/codegen/enums.rs similarity index 99% rename from ic10emu/src/vm/instructions/enums.rs rename to ic10emu/src/vm/instructions/codegen/enums.rs index 62d68c8..b35806d 100644 --- a/ic10emu/src/vm/instructions/enums.rs +++ b/ic10emu/src/vm/instructions/codegen/enums.rs @@ -1,3 +1,17 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run +// +// `cargo xtask generate -m instructions` +// +// from the workspace to regenerate +// +// ================================================= + use serde_derive::{Deserialize, Serialize}; use strum::{Display, EnumIter, EnumProperty, EnumString, FromRepr}; use crate::vm::object::traits::Programmable; @@ -18,8 +32,7 @@ use wasm_bindgen::prelude::*; Deserialize )] #[derive(EnumIter, EnumString, EnumProperty, FromRepr)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf, serialize_all = "lowercase")] #[serde(rename_all = "lowercase")] pub enum InstructionOp { diff --git a/ic10emu/src/vm/instructions/traits.rs b/ic10emu/src/vm/instructions/codegen/traits.rs similarity index 99% rename from ic10emu/src/vm/instructions/traits.rs rename to ic10emu/src/vm/instructions/codegen/traits.rs index f92e2a3..53167b0 100644 --- a/ic10emu/src/vm/instructions/traits.rs +++ b/ic10emu/src/vm/instructions/codegen/traits.rs @@ -1,3 +1,17 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run +// +// `cargo xtask generate -m instructions` +// +// from the workspace to regenerate +// +// ================================================= + use crate::vm::object::traits::IntegratedCircuit; use crate::vm::instructions::enums::InstructionOp; pub trait AbsInstruction: IntegratedCircuit { diff --git a/ic10emu/src/vm/instructions/operands.rs b/ic10emu/src/vm/instructions/operands.rs index 1f55441..8e2ca5d 100644 --- a/ic10emu/src/vm/instructions/operands.rs +++ b/ic10emu/src/vm/instructions/operands.rs @@ -12,8 +12,7 @@ use tsify::Tsify; use wasm_bindgen::prelude::*; #[derive(PartialEq, Eq, Debug, Clone, Copy, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum Device { Db, Numbered(u32), @@ -21,31 +20,27 @@ pub enum Device { } #[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct RegisterSpec { pub indirection: u32, pub target: u32, } #[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct DeviceSpec { pub device: Device, pub connection: Option, } #[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct Identifier { pub name: String, } #[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum Number { Float(f64), Binary(i64), @@ -56,8 +51,7 @@ pub enum Number { } #[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum Operand { RegisterSpec(RegisterSpec), DeviceSpec(DeviceSpec), diff --git a/ic10emu/src/vm/object.rs b/ic10emu/src/vm/object.rs index 21c7ac5..87ef27a 100644 --- a/ic10emu/src/vm/object.rs +++ b/ic10emu/src/vm/object.rs @@ -73,8 +73,7 @@ impl VMObject { } #[derive(Debug, Default, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct Name { pub value: String, pub hash: i32, @@ -110,24 +109,21 @@ impl Name { } #[derive(Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct LogicField { pub field_type: MemoryAccess, pub value: f64, } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct SlotOccupantInfo { pub quantity: u32, pub id: ObjectID, } #[derive(Debug, Default, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct Slot { pub parent: ObjectID, pub index: usize, diff --git a/ic10emu/src/vm/object/errors.rs b/ic10emu/src/vm/object/errors.rs index 0c1db59..76f3acb 100644 --- a/ic10emu/src/vm/object/errors.rs +++ b/ic10emu/src/vm/object/errors.rs @@ -8,8 +8,7 @@ use tsify::Tsify; use wasm_bindgen::prelude::*; #[derive(Error, Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum LogicError { #[error("can't read LogicType {0}")] CantRead(LogicType), @@ -24,8 +23,7 @@ pub enum LogicError { } #[derive(Error, Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum MemoryError { #[error("stack underflow: {0} < range [0..{1})")] StackUnderflow(i32, usize), diff --git a/ic10emu/src/vm/object/generic/macros.rs b/ic10emu/src/vm/object/generic/macros.rs index 23d6985..dfdb66a 100644 --- a/ic10emu/src/vm/object/generic/macros.rs +++ b/ic10emu/src/vm/object/generic/macros.rs @@ -210,3 +210,68 @@ macro_rules! GWSuit { }; } pub(crate) use GWSuit; + +macro_rules! GWCircuitHolderItem { + ( + $( #[$attr:meta] )* + $viz:vis struct $struct:ident { + $($body:tt)* + } + ) => { + impl GWCircuitHolder for $struct { + type Holder = ItemCircuitHolder; + fn gw_get_error(&self) -> i32 { + self.error + } + fn gw_set_error(&mut self, state: i32) { + self.error = state; + } + } + }; + +} +pub(crate) use GWCircuitHolderItem; + + +macro_rules! GWCircuitHolderSuit { + ( + $( #[$attr:meta] )* + $viz:vis struct $struct:ident { + $($body:tt)* + } + ) => { + impl GWCircuitHolder for $struct { + type Holder = SuitCircuitHolder; + fn gw_get_error(&self) -> i32 { + self.error + } + fn gw_set_error(&mut self, state: i32) { + self.error = state; + } + } + }; + +} +pub(crate) use GWCircuitHolderSuit; + + +macro_rules! GWCircuitHolderDevice { + ( + $( #[$attr:meta] )* + $viz:vis struct $struct:ident { + $($body:tt)* + } + ) => { + impl GWCircuitHolder for $struct { + type Holder = DeviceCircuitHolder; + fn gw_get_error(&self) -> i32 { + self.error + } + fn gw_set_error(&mut self, state: i32) { + self.error = state; + } + } + }; + +} +pub(crate) use GWCircuitHolderDevice; diff --git a/ic10emu/src/vm/object/generic/structs.rs b/ic10emu/src/vm/object/generic/structs.rs index 85a11ca..b6e3571 100644 --- a/ic10emu/src/vm/object/generic/structs.rs +++ b/ic10emu/src/vm/object/generic/structs.rs @@ -120,12 +120,13 @@ pub struct GenericLogicableDevice { ObjectInterface!, GWThermal!, GWInternalAtmo!, GWStructure!, GWStorage!, GWLogicable!, - GWDevice! + GWDevice!, GWCircuitHolderDevice! )] #[custom(implements(Object { Thermal[GWThermal::is_thermal], InternalAtmosphere[GWInternalAtmo::is_internal_atmo], - Structure, Storage, Logicable, Device + Structure, Storage, Logicable, Device, + CircuitHolder }))] pub struct GenericCircuitHolder { #[custom(object_id)] @@ -146,6 +147,7 @@ pub struct GenericCircuitHolder { pub connections: Vec, pub pins: Option>>, pub reagents: Option>, + pub error: i32, } #[derive( @@ -481,12 +483,14 @@ pub struct GenericItemLogicableMemoryReadWriteable { #[derive( ObjectInterface!, GWThermal!, GWInternalAtmo!, - GWItem!, GWStorage!, GWLogicable! + GWItem!, GWStorage!, GWLogicable!, + GWCircuitHolderItem! )] #[custom(implements(Object { Thermal[GWThermal::is_thermal], InternalAtmosphere[GWInternalAtmo::is_internal_atmo], - Item, Storage, Logicable + Item, Storage, Logicable, + CircuitHolder }))] pub struct GenericItemCircuitHolder { #[custom(object_id)] @@ -505,6 +509,7 @@ pub struct GenericItemCircuitHolder { pub slots: Vec, pub fields: BTreeMap, pub modes: Option>, + pub error: i32, } #[derive( @@ -543,12 +548,13 @@ pub struct GenericItemSuitLogic { GWThermal!, GWInternalAtmo!, GWItem!, GWStorage!, GWLogicable!, GWMemoryReadable!, GWMemoryWritable!, - GWSuit! + GWSuit!, GWCircuitHolderSuit! )] #[custom(implements(Object { Thermal[GWThermal::is_thermal], InternalAtmosphere[GWInternalAtmo::is_internal_atmo], - Item, Storage, Suit, Logicable, MemoryReadable, MemoryWritable + Item, Storage, Suit, Logicable, MemoryReadable, MemoryWritable, + CircuitHolder }))] pub struct GenericItemSuitCircuitHolder { #[custom(object_id)] @@ -569,6 +575,7 @@ pub struct GenericItemSuitCircuitHolder { pub fields: BTreeMap, pub modes: Option>, pub memory: Vec, + pub error: i32, } #[derive( diff --git a/ic10emu/src/vm/object/generic/traits.rs b/ic10emu/src/vm/object/generic/traits.rs index c66f668..a74a555 100644 --- a/ic10emu/src/vm/object/generic/traits.rs +++ b/ic10emu/src/vm/object/generic/traits.rs @@ -381,9 +381,8 @@ impl MemoryWritable for T { Ok(()) } } - fn clear_memory(&mut self) -> Result<(), MemoryError> { + fn clear_memory(&mut self) { self.memory_mut().fill(0.0); - Ok(()) } } @@ -564,7 +563,7 @@ impl Item for T { self.damage().unwrap_or(0.0) } fn set_damage(&mut self, damage: f32) { - self.damage_mut().replace(damage); + self.damage_mut().replace(damage.clamp(0.0, 1.0)); } } diff --git a/ic10emu/src/vm/object/humans.rs b/ic10emu/src/vm/object/humans.rs index bc12020..10a1b06 100644 --- a/ic10emu/src/vm/object/humans.rs +++ b/ic10emu/src/vm/object/humans.rs @@ -79,8 +79,7 @@ pub struct HumanPlayer { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct EntityInfo { pub hydration: f32, pub nutrition: f32, diff --git a/ic10emu/src/vm/object/macros.rs b/ic10emu/src/vm/object/macros.rs index 9a0f536..5b0d2c5 100644 --- a/ic10emu/src/vm/object/macros.rs +++ b/ic10emu/src/vm/object/macros.rs @@ -22,11 +22,13 @@ macro_rules! object_trait { paste::paste! { $( + #[doc = "Return a `& dyn " $trt "` if implimented by the object"] #[inline(always)] fn [](&self) -> Option<[<$trt Ref>]> { None } + #[doc = "Return a `&mut dyn " $trt "` if implimented by the object"] #[inline(always)] fn [](&mut self) -> Option<[<$trt RefMut>]> { None diff --git a/ic10emu/src/vm/object/stationpedia.rs b/ic10emu/src/vm/object/stationpedia.rs index 088dc19..fc1ac74 100644 --- a/ic10emu/src/vm/object/stationpedia.rs +++ b/ic10emu/src/vm/object/stationpedia.rs @@ -58,7 +58,7 @@ pub fn object_from_frozen( .clone() .unwrap_or_else(|| prefab.get_str("name").unwrap().to_string())), ), - prefab: Name::from_prefab_name(&prefab.to_string()), + prefab: Name::from_prefab_name(prefab.as_ref()), fields: template .logic .logic_types @@ -84,7 +84,7 @@ pub fn object_from_frozen( .map(TryInto::try_into) .transpose() .map_err(|vec: Vec| TemplateError::MemorySize(vec.len(), 512))? - .unwrap_or_else(|| [0.0f64; 512]), + .unwrap_or( [0.0f64; 512]), parent_slot: None, registers: obj .circuit @@ -92,7 +92,7 @@ pub fn object_from_frozen( .map(|circuit| circuit.registers.clone().try_into()) .transpose() .map_err(|vec: Vec| TemplateError::MemorySize(vec.len(), 18))? - .unwrap_or_else(|| [0.0f64; 18]), + .unwrap_or( [0.0f64; 18]), ip: obj .circuit .as_ref() diff --git a/ic10emu/src/vm/object/stationpedia/structs/integrated_circuit.rs b/ic10emu/src/vm/object/stationpedia/structs/integrated_circuit.rs index c0dae7e..90aab2c 100644 --- a/ic10emu/src/vm/object/stationpedia/structs/integrated_circuit.rs +++ b/ic10emu/src/vm/object/stationpedia/structs/integrated_circuit.rs @@ -23,7 +23,12 @@ static RETURN_ADDRESS_INDEX: usize = 17; static STACK_POINTER_INDEX: usize = 16; #[derive(ObjectInterface!)] -#[custom(implements(Object { Item, Storage, Logicable, MemoryReadable, MemoryWritable }))] +#[custom(implements(Object { + Item, Storage, Logicable, + MemoryReadable, MemoryWritable, + SourceCode, IntegratedCircuit, + Programmable +}))] pub struct ItemIntegratedCircuit10 { #[custom(object_id)] pub id: ObjectID, @@ -83,7 +88,7 @@ impl Item for ItemIntegratedCircuit10 { self.damage } fn set_damage(&mut self, damage: f32) { - self.damage = damage; + self.damage = damage.clamp(0.0, 1.0); } } @@ -208,9 +213,8 @@ impl MemoryWritable for ItemIntegratedCircuit10 { Ok(()) } } - fn clear_memory(&mut self) -> Result<(), MemoryError> { + fn clear_memory(&mut self) { self.memory.fill(0.0); - Ok(()) } } @@ -369,6 +373,9 @@ impl IntegratedCircuit for ItemIntegratedCircuit10 { } fn set_state(&mut self, state: crate::interpreter::ICState) { self.state = state; + if matches!(self.state, ICState::Yield | ICState::Sleep(..)) { + self.ic = 0; + } } fn get_instructions_since_yield(&self) -> u16 { self.ic diff --git a/ic10emu/src/vm/object/templates.rs b/ic10emu/src/vm/object/templates.rs index bfc69c3..9075312 100644 --- a/ic10emu/src/vm/object/templates.rs +++ b/ic10emu/src/vm/object/templates.rs @@ -41,8 +41,7 @@ use wasm_bindgen::prelude::*; use super::{stationpedia, MemoryAccess, ObjectID, VMObject}; #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum Prefab { Hash(i32), Name(String), @@ -55,7 +54,7 @@ impl std::fmt::Display for Prefab { StationpediaPrefab::from_repr(*hash), format!("Unknown({hash}))"), ), - Self::Name(name) => (StationpediaPrefab::from_str(&name).ok(), name.clone()), + Self::Name(name) => (StationpediaPrefab::from_str(name).ok(), name.clone()), }; if let Some(known) = known_prefab { write!(f, "{known}") @@ -66,8 +65,7 @@ impl std::fmt::Display for Prefab { } #[derive(Clone, Debug, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ObjectInfo { pub name: Option, pub id: Option, @@ -106,6 +104,28 @@ impl From<&VMObject> for ObjectInfo { } impl ObjectInfo { + /// Build empty info with a prefab name + pub fn with_prefab(prefab: Prefab) -> Self { + ObjectInfo { + name: None, + id: None, + prefab: Some(prefab), + slots: None, + damage: None, + device_pins: None, + connections: None, + reagents: None, + memory: None, + logic_values: None, + entity: None, + source_code: None, + circuit: None, + } + } + + /// update the object info from the relavent implimented interfaces of a dyn object + /// use `ObjectInterfaces::from_object` with a `&dyn Object` (`&*VMObject.borrow()`) + /// to obtain the interfaces pub fn update_from_interfaces(&mut self, interfaces: &ObjectInterfaces<'_>) -> &mut Self { if let Some(storage) = interfaces.storage { self.update_from_storage(storage); @@ -134,6 +154,7 @@ impl ObjectInfo { self } + /// set `slots` to Some if there is relevant storage pub fn update_from_storage(&mut self, storage: StorageRef<'_>) -> &mut Self { let slots = storage.get_slots(); if slots.is_empty() { @@ -154,6 +175,7 @@ impl ObjectInfo { self } + /// store `item` properties like `damage` pub fn update_from_item(&mut self, item: ItemRef<'_>) -> &mut Self { let damage = item.get_damage(); if damage == 0.0 { @@ -164,6 +186,7 @@ impl ObjectInfo { self } + /// store `device_pins`, `reagents`, and `connections` pub fn update_from_device(&mut self, device: DeviceRef<'_>) -> &mut Self { let pins = device.device_pins(); if pins.is_some_and(<[Option]>::is_empty) { @@ -188,18 +211,16 @@ impl ObjectInfo { } else { self.connections.replace( connections - .into_iter() + .iter() .enumerate() - .filter_map(|(index, conn)| match conn.get_network() { - Some(net) => Some((index as u32, net)), - None => None, - }) + .filter_map(|(index, conn)| conn.get_network().map(|net| (index as u32, net))) .collect(), ); } self } + /// store memory state pub fn update_from_memory(&mut self, memory: MemoryReadableRef<'_>) -> &mut Self { if memory.memory_size() != 0 { self.memory.replace(memory.get_memory_slice().to_vec()); @@ -209,6 +230,7 @@ impl ObjectInfo { self } + /// store logic field state pub fn update_from_logic(&mut self, logic: LogicableRef<'_>) -> &mut Self { self.logic_values.replace( logic @@ -223,6 +245,7 @@ impl ObjectInfo { self } + /// store entity state pub fn update_from_human(&mut self, human: HumanRef<'_>) -> &mut Self { let damage = human.get_damage(); if damage == 0.0 { @@ -241,6 +264,7 @@ impl ObjectInfo { self } + /// store source code pub fn update_from_source_code(&mut self, source: SourceCodeRef<'_>) -> &mut Self { let code = source.get_source_code(); if !code.is_empty() { @@ -249,6 +273,7 @@ impl ObjectInfo { self } + /// store circuit state; ie. `registers`, `aliases`, `defines` etc. pub fn update_from_circuit(&mut self, circuit: IntegratedCircuitRef<'_>) -> &mut Self { self.circuit.replace(ICInfo { instruction_pointer: circuit.get_instruction_pointer(), @@ -276,8 +301,7 @@ impl ObjectInfo { } #[derive(Debug, Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct FrozenObject { pub obj_info: ObjectInfo, pub database_template: bool, @@ -379,7 +403,7 @@ impl FrozenObject { .collect::>() }) }) - .unwrap_or_else(Vec::new), + .unwrap_or_default(), writeable_logic: logic_info .and_then(|info| { info.logic_slot_types.get(&(index as u32)).map(|s_info| { @@ -393,7 +417,7 @@ impl FrozenObject { .collect::>() }) }) - .unwrap_or_else(Vec::new), + .unwrap_or_default(), occupant: self .obj_info .slots @@ -555,6 +579,7 @@ impl FrozenObject { pins: self.build_pins(&s.device), device_info: s.device.clone(), reagents: self.obj_info.reagents.clone(), + error: 0, })), StructureLogicDeviceMemory(s) if matches!(s.memory.memory_access, MemoryAccess::Read) => @@ -739,6 +764,7 @@ impl FrozenObject { slots: self.build_slots(id, &i.slots, Some(&i.logic)), fields: self.build_logic_fields(&i.logic), modes: i.logic.modes.clone(), + error: 0, })), ItemSuit(i) => Ok(VMObject::new(GenericItemSuit { id, @@ -783,6 +809,7 @@ impl FrozenObject { fields: self.build_logic_fields(&i.logic), modes: i.logic.modes.clone(), memory: self.build_memory(&i.memory), + error: 0, })), Human(h) => { let mut human = HumanPlayer::with_species(id, vm, h.species); @@ -1368,42 +1395,3 @@ impl From> for Vec { .collect() } } - -#[cfg(test)] -mod tests { - - use serde_derive::Deserialize; - use serde_json; - use std::collections::BTreeMap; - use std::fs::File; - use std::io::BufReader; - use std::path::PathBuf; - - use super::ObjectTemplate; - - static INIT: std::sync::Once = std::sync::Once::new(); - - fn setup() { - INIT.call_once(|| { - let _ = color_eyre::install(); - }) - } - - #[allow(dead_code)] - #[derive(Debug, Deserialize)] - struct Database { - pub prefabs: BTreeMap, - } - - #[test] - fn all_database_prefabs_parse() -> color_eyre::Result<()> { - setup(); - let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - d = d.parent().unwrap().join("data").join("database.json"); - println!("loading database from {}", d.display()); - - let _database: Database = serde_json::from_reader(BufReader::new(File::open(d)?))?; - - Ok(()) - } -} diff --git a/ic10emu/src/vm/object/traits.rs b/ic10emu/src/vm/object/traits.rs index 47a545a..ccd20cb 100644 --- a/ic10emu/src/vm/object/traits.rs +++ b/ic10emu/src/vm/object/traits.rs @@ -27,8 +27,7 @@ use wasm_bindgen::prelude::*; use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ParentSlotInfo { pub parent: ObjectID, pub slot: usize, @@ -53,8 +52,7 @@ pub struct ParentSlotInfo { Serialize, Deserialize, )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub enum StatState { #[default] Normal, @@ -70,88 +68,154 @@ tag_object_traits! { } pub trait Storage { + /// Number of storage slots this object has fn slots_count(&self) -> usize; + /// Get a reference to a indexed slot fn get_slot(&self, index: usize) -> Option<&Slot>; + /// Get a mutable reference to a indexed slot fn get_slot_mut(&mut self, index: usize) -> Option<&mut Slot>; + /// Get a vector of references to all an object's slots fn get_slots(&self) -> Vec<&Slot>; + /// Get a vector a mutable references to all an object's slots fn get_slots_mut(&mut self) -> Vec<&mut Slot>; } pub trait MemoryReadable { + /// Size of an object memory, the count of f64 elements stored fn memory_size(&self) -> usize; + /// Get the value at the indexed memory. + /// Errors if the index over or under flows the memory fn get_memory(&self, index: i32) -> Result; + /// get a slice of the objects' memory fn get_memory_slice(&self) -> &[f64]; } pub trait MemoryWritable: MemoryReadable { + /// Set the value at the indexed memory + /// Errors if the index over or under flows the memory fn set_memory(&mut self, index: i32, val: f64) -> Result<(), MemoryError>; - fn clear_memory(&mut self) -> Result<(), MemoryError>; + /// Reset all an object's memory (typically to all zero values) + fn clear_memory(&mut self); } pub trait Logicable: Storage { + /// The crc32 hash of the object's prefab name fn prefab_hash(&self) -> i32; - /// returns 0 if not set + /// The crc32 hash of an object's name fn name_hash(&self) -> i32; + /// If the object has *any* readable logic fields fn is_logic_readable(&self) -> bool; + /// If the object has *any* writable logic fields fn is_logic_writeable(&self) -> bool; + /// Can the logic type be read form this object fn can_logic_read(&self, lt: LogicType) -> bool; + /// Can the logic type be written to this object fn can_logic_write(&self, lt: LogicType) -> bool; + /// Write the value of the logic type on this object. + /// Errors if the type can not be written to. + /// force will allow special cases for existing values that arn't + /// normally writable. + /// This is for use outside of ic10 code but does not guarantee the + /// value will write or that no error will result. + /// If a logic type is not present on an object the force write will still error. fn set_logic(&mut self, lt: LogicType, value: f64, force: bool) -> Result<(), LogicError>; + /// Read the value of the logic type on this object. + /// Errors if a logic type is not readable fn get_logic(&self, lt: LogicType) -> Result; + /// Can a slot logic type be read from the indexed slot fn can_slot_logic_read(&self, slt: LogicSlotType, index: f64) -> bool; + /// Read a slot logic type value from an index slot fn get_slot_logic(&self, slt: LogicSlotType, index: f64) -> Result; + /// Returns a vector of the `LogicType`'s that could be read or written to or form this + /// object fn valid_logic_types(&self) -> Vec; + /// If this object has modes returns a vector of (value, name) pairs fn known_modes(&self) -> Option>; } pub trait SourceCode { + /// Set the source code for this object. + /// Errors if the source code has compilation errors. fn set_source_code(&mut self, code: &str) -> Result<(), ICError>; + /// Set the source code for this object, lines that fail to compile are reduced to nops. fn set_source_code_with_invalid(&mut self, code: &str); + /// Return the source code form this object fn get_source_code(&self) -> String; + /// Return the compiled instruction and it's operands at the indexed line in the source + /// code. fn get_line(&self, line: usize) -> Result<&Instruction, ICError>; } pub trait CircuitHolder: Logicable + Storage { + /// Clear any error set on the circuit holder fn clear_error(&mut self); + /// Set an int error value on the circuit holder fn set_error(&mut self, state: i32); + /// Get a reference (which may be self) to a logicable object based on an index + /// (`db`, `d0`, `d1` etc.). + /// for a StructureCircuitHolder this would be the set pins + /// fpr a tablet or suit this would be the parent human's equipment /// i32::MAX is db fn get_logicable_from_index( &self, device: i32, connection: Option, ) -> Option; + /// Get a mutable reference (which may be self) to a logicable object based on an index + /// (`db`, `d0`, `d1` etc.). + /// for a StructureCircuitHolder this would be the set pins + /// fpr a tablet or suit this would be the parent human's equipment /// i32::MAX is db fn get_logicable_from_index_mut( &mut self, device: i32, connection: Option, ) -> Option; + /// Use an object id to get a reference to an object network visible object. + /// uses ObjectRef in case the object ID is it's own ID fn get_logicable_from_id( &self, device: ObjectID, connection: Option, ) -> Option; + /// Use an object id to get a mutable reference to an object network visible object. + /// uses ObjectRefMut in case the object ID is it's own ID fn get_logicable_from_id_mut( &mut self, device: ObjectID, connection: Option, ) -> Option; + /// Get the programmable circuit object slotted into this circuit holder fn get_ic(&self) -> Option; + /// Execute a `hcf` instruction fn hault_and_catch_fire(&mut self); } pub trait Item { + /// Is an item consumable? fn consumable(&self) -> bool; + /// If an item is a filter what gas is it for? fn filter_type(&self) -> Option; + /// Is this item an ingredient ? fn ingredient(&self) -> bool; + /// The max quantity this item stacks to fn max_quantity(&self) -> u32; + /// Map of the reagents to the quantity produces by processing this item fn reagents(&self) -> Option<&BTreeMap>; + /// The class of item this is for storage slots fn slot_class(&self) -> Class; + /// The sorting class of the item fn sorting_class(&self) -> SortingClass; + /// The parent object and slot index this item is stored in fn get_parent_slot(&self) -> Option; + /// Set the parent object and slot index this object is stored in fn set_parent_slot(&mut self, info: Option); + /// Get the damage 0.0 is no damage, 1.0 is full damage fn get_damage(&self) -> f32; + /// Set the damage of the object, 0.0 is no damage, 1.0 is full damage fn set_damage(&mut self, damage: f32); + /// If this object is stored in a human's inventory or in an inventory down the chain from + /// a human, return that human fn root_parent_human(&self) -> Option { self.get_parent_slot().and_then(|info| { if let Some(obj) = self.get_vm().get_object(info.parent) { @@ -192,34 +256,75 @@ tag_object_traits! { } pub trait IntegratedCircuit: Logicable + MemoryWritable + SourceCode + Item { + /// Get the object that acts as the circuit holder for this object fn get_circuit_holder(&self) -> Option; + /// Get the current instruction pointer fn get_instruction_pointer(&self) -> u32; + /// Set the next instruction to execute. The instruction pointer is set to this value once + /// execution of the current instruction is complete. fn set_next_instruction(&mut self, next_instruction: f64); + /// Set the next instruction to execute relative to the current instruction pointer. + /// The instruction pointer is set to this value once execution of the current + /// instruction is complete. fn set_next_instruction_relative(&mut self, offset: f64) { self.set_next_instruction(self.get_instruction_pointer() as f64 + offset); } + /// Reset the circuit. The instruction pointer, instruction count since last yield, all + /// registers and memory are set to 0; aliases and defines are cleared; state is set back + /// to start. fn reset(&mut self); + /// When given some indirection level and a first target read registers values as + /// targets while reducing indirection level by one until it reaches to 0 + /// to find the real target. + /// Errors if any index along the chain is out of range fn get_real_target(&self, indirection: u32, target: u32) -> Result; + /// Return a register value through possible indirection + /// Errors if any index along the chain is out of range fn get_register(&self, indirection: u32, target: u32) -> Result; + /// Get a slice of all registers fn get_registers(&self) -> &[f64]; + /// Get a mutable slice of all registers fn get_registers_mut(&mut self) -> &mut [f64]; + /// Set a register value through possible indirection + /// Errors if any index along the chain is out of range fn set_register(&mut self, indirection: u32, target: u32, val: f64) -> Result; + /// Set the return address register's value fn set_return_address(&mut self, addr: f64); + /// Set the return address to the instruction after the current instruction pointer fn al(&mut self) { self.set_return_address(self.get_instruction_pointer() as f64 + 1.0); } + /// Write value to the stack memory at the current stack pointer and advance stack pointer + /// Errors for stack under or overflow of the stack pointer fn push_stack(&mut self, val: f64) -> Result; + /// Read value from the stack memory at the current stack pointer and decrement the stack pointer + /// Errors for stack under or overflow of the stack pointer fn pop_stack(&mut self) -> Result; + /// Read the value form the stack memory at the current stack pointer and leave the stack pointer + /// at the same location + /// Errors for stack under or overflow of the stack pointer fn peek_stack(&self) -> Result; + /// Read the value from the stack memory at indexed address + /// Errors for stack under or overflow of the address fn get_stack(&self, addr: f64) -> Result; + /// Write the value to the stack memory at the indexed address + /// Errors for stack under or overflow of the address fn put_stack(&mut self, addr: f64, val: f64) -> Result; + /// Get a reference to the alias Map fn get_aliases(&self) -> &BTreeMap; + /// Get a mutable reference to the alias Map fn get_aliases_mut(&mut self) -> &mut BTreeMap; + /// Get a reference to the define Map fn get_defines(&self) -> &BTreeMap; + /// Get a mutable reference to the define Map fn get_defines_mut(&mut self) -> &mut BTreeMap; + /// Get a reference to the labels Map fn get_labels(&self) -> &BTreeMap; + /// Get the current circuit state. (Start, Yield, Sleep, Error, etc.) fn get_state(&self) -> ICState; + /// Set the current circuit state. (Start, Yield, Sleep, Error, etc.) fn set_state(&mut self, state: ICState); + /// Get the count of instructions executed since the last yield fn get_instructions_since_yield(&self) -> u16; } @@ -251,7 +356,10 @@ tag_object_traits! { } pub trait Device: Logicable { + /// Can the slot logic type be written to the object at the indexed slot fn can_slot_logic_write(&self, slt: LogicSlotType, index: f64) -> bool; + /// Write to the slot logic type at the indexed slot + /// Errors if the index is out of range or the slot logic type is not writable fn set_slot_logic( &mut self, slt: LogicSlotType, @@ -259,30 +367,42 @@ tag_object_traits! { value: f64, force: bool, ) -> Result<(), LogicError>; + /// Get a slice of the Device's network connections fn connection_list(&self) -> &[Connection]; + /// Get a mutable slice of the Device's network connections fn connection_list_mut(&mut self) -> &mut [Connection]; + /// Get a slice of the devices "pins" (connected object Ids) if the device has pins fn device_pins(&self) -> Option<&[Option]>; + /// Get a mutable slice of the devices "pins" (connected object Ids) if the device has pins fn device_pins_mut(&mut self) -> Option<&mut [Option]>; + /// Does the device respond to Activate fn has_activate_state(&self) -> bool; + /// Does the device have an internal atmosphere fn has_atmosphere(&self) -> bool; + /// Does the device have a Color state fn has_color_state(&self) -> bool; + /// Does the device have a Lock state fn has_lock_state(&self) -> bool; + /// Does the device have a mode state fn has_mode_state(&self) -> bool; + /// Does the device have an On / off state fn has_on_off_state(&self) -> bool; + /// Does the device have an Open state fn has_open_state(&self) -> bool; + /// Does the device store reagents fn has_reagents(&self) -> bool; - /// return vector of (reagent_hash, quantity) pairs + /// Return vector of (reagent_hash, quantity) pairs fn get_reagents(&self) -> Vec<(i32, f64)>; - /// overwrite present reagents + /// Overwrite present reagents fn set_reagents(&mut self, reagents: &[(i32, f64)]); - /// adds the reagents to contents + /// Adds the reagents to contents fn add_reagents(&mut self, reagents: &[(i32, f64)]); } pub trait ReagentInterface: Device { - /// reagents required by current recipe + /// Reagents required by current recipe fn get_current_recipie(&self) -> Vec<(i32, f64)>; - /// reagents required to complete current recipe + /// Reagents required to complete current recipe fn get_current_required(&self) -> Vec<(i32, f64)>; } @@ -293,20 +413,35 @@ tag_object_traits! { pub trait WirelessReceive: Logicable {} pub trait Network: Logicable { + /// Does the network contain the Object id fn contains(&self, id: &ObjectID) -> bool; + /// Does the network contain all the object ids fn contains_all(&self, ids: &[ObjectID]) -> bool; + /// Does the network contain the object id on a data connection fn contains_data(&self, id: &ObjectID) -> bool; + /// Does the network contain all the object ids on a data connection fn contains_all_data(&self, ids: &[ObjectID]) -> bool; + /// Does the network contain the object id on a power connection fn contains_power(&self, id: &ObjectID) -> bool; + /// Does the network contain all the object ids on a power connection fn contains_all_power(&self, ids: &[ObjectID]) -> bool; + /// Return a vector of all object ids visible to the data connection of the source ID object fn data_visible(&self, source: &ObjectID) -> Vec; + /// Add the object to the network as a data connection fn add_data(&mut self, id: ObjectID) -> bool; + /// Add the object id as a power connection fn add_power(&mut self, id: ObjectID) -> bool; + /// remove the object id for both power and data connections if present in either fn remove_all(&mut self, id: ObjectID) -> bool; + /// remove the object id from data network fn remove_data(&mut self, id: ObjectID) -> bool; + /// remove object id from power network fn remove_power(&mut self, id: ObjectID) -> bool; + /// get all data connected devices fn get_devices(&self) -> Vec; + /// get all power connected devices fn get_power_only(&self) -> Vec; + /// get a slice of the channel data values fn get_channel_data(&self) -> &[f64; 8]; } diff --git a/stationeers_data/src/database/prefab_map.rs b/stationeers_data/src/database/prefab_map.rs index 2331904..eb15523 100644 --- a/stationeers_data/src/database/prefab_map.rs +++ b/stationeers_data/src/database/prefab_map.rs @@ -1,50758 +1,49534 @@ -use crate::enums::script_enums::*; -use crate::enums::basic_enums::*; -use crate::enums::{MemoryAccess, ConnectionType, ConnectionRole}; +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run +// +// `cargo xtask generate -m database` +// +// from the workspace to regenerate +// +// ================================================= + +use crate::enums::script::*; +use crate::enums::basic::*; +use crate::enums::{MemoryAccess, ConnectionType, ConnectionRole, MachineTier}; use crate::templates::*; pub fn build_prefab_database() -> std::collections::BTreeMap< i32, crate::templates::ObjectTemplate, > { #[allow(clippy::unreadable_literal)] - std::collections::BTreeMap::from([ - ( - -1330388999i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardBlack".into(), - prefab_hash: -1330388999i32, - desc: "".into(), - name: "Access Card (Black)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1411327657i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardBlue".into(), - prefab_hash: -1411327657i32, - desc: "".into(), - name: "Access Card (Blue)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1412428165i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardBrown".into(), - prefab_hash: 1412428165i32, - desc: "".into(), - name: "Access Card (Brown)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1339479035i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardGray".into(), - prefab_hash: -1339479035i32, - desc: "".into(), - name: "Access Card (Gray)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -374567952i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardGreen".into(), - prefab_hash: -374567952i32, - desc: "".into(), - name: "Access Card (Green)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 337035771i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardKhaki".into(), - prefab_hash: 337035771i32, - desc: "".into(), - name: "Access Card (Khaki)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -332896929i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardOrange".into(), - prefab_hash: -332896929i32, - desc: "".into(), - name: "Access Card (Orange)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 431317557i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardPink".into(), - prefab_hash: 431317557i32, - desc: "".into(), - name: "Access Card (Pink)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 459843265i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardPurple".into(), - prefab_hash: 459843265i32, - desc: "".into(), - name: "Access Card (Purple)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1713748313i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardRed".into(), - prefab_hash: -1713748313i32, - desc: "".into(), - name: "Access Card (Red)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2079959157i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardWhite".into(), - prefab_hash: 2079959157i32, - desc: "".into(), - name: "Access Card (White)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 568932536i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AccessCardYellow".into(), - prefab_hash: 568932536i32, - desc: "".into(), - name: "Access Card (Yellow)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::AccessCard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1365789392i32, - ItemConsumerTemplate { - prefab: PrefabInfo { - prefab_name: "ApplianceChemistryStation".into(), - prefab_hash: 1365789392i32, - desc: "".into(), - name: "Chemistry Station".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Output".into(), typ : Class::None }] - .into_iter() - .collect(), - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemCharcoal".into(), "ItemCobaltOre".into(), "ItemFern".into(), - "ItemSilverIngot".into(), "ItemSilverOre".into(), "ItemSoyOil" - .into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - } - .into(), - ), - ( - -1683849799i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ApplianceDeskLampLeft".into(), - prefab_hash: -1683849799i32, - desc: "".into(), - name: "Appliance Desk Lamp Left".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1174360780i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ApplianceDeskLampRight".into(), - prefab_hash: 1174360780i32, - desc: "".into(), - name: "Appliance Desk Lamp Right".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1136173965i32, - ItemConsumerTemplate { - prefab: PrefabInfo { - prefab_name: "ApplianceMicrowave".into(), - prefab_hash: -1136173965i32, - desc: "While countless \'better\' ways of cooking Food have been invented in the last few hundred years, few are as durable or easy to fabricate as the OK-Zoomer microwave. Licensed from Xigo, the plans are based on a classic model from the mid-21st century, giving it a charmingly retro feel. But don\'t worry, it oscillates Water molecules more than adequately. \nJust bolt it to a Powered Bench using a Wrench to power it, follow the recipe, and you\'re cooking." - .into(), - name: "Microwave".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Output".into(), typ : Class::None }] - .into_iter() - .collect(), - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemCorn".into(), "ItemEgg".into(), "ItemFertilizedEgg".into(), - "ItemFlour".into(), "ItemMilk".into(), "ItemMushroom".into(), - "ItemPotato".into(), "ItemPumpkin".into(), "ItemRice".into(), - "ItemSoybean".into(), "ItemSoyOil".into(), "ItemTomato".into(), - "ItemSugarCane".into(), "ItemCocoaTree".into(), "ItemCocoaPowder" - .into(), "ItemSugar".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - } - .into(), - ), - ( - -749191906i32, - ItemConsumerTemplate { - prefab: PrefabInfo { - prefab_name: "AppliancePackagingMachine".into(), - prefab_hash: -749191906i32, - desc: "The Xigo Cannifier requires Empty Can and cooked food to create long-lasting, easily stored sustenance. Note that the Cannifier must be bolted to a Powered Bench for power, and only accepts cooked food and tin cans.\n\nOPERATION\n\n1. Add the correct ingredients to the device via the hopper in the TOP.\n\n2. Close the device using the dropdown handle.\n\n3. Activate the device.\n\n4. Remove canned goods from the outlet in the FRONT.\n\nNote: the Cannifier will flash an error on its activation switch if you attempt to activate it before closing it.\n\n\n " - .into(), - name: "Basic Packaging Machine".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }] - .into_iter() - .collect(), - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemCookedCondensedMilk".into(), "ItemCookedCorn".into(), - "ItemCookedMushroom".into(), "ItemCookedPowderedEggs".into(), - "ItemCookedPumpkin".into(), "ItemCookedRice".into(), - "ItemCookedSoybean".into(), "ItemCookedTomato".into(), - "ItemEmptyCan".into(), "ItemMilk".into(), "ItemPotatoBaked" - .into(), "ItemSoyOil".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - } - .into(), - ), - ( - -1339716113i32, - ItemConsumerTemplate { - prefab: PrefabInfo { - prefab_name: "AppliancePaintMixer".into(), - prefab_hash: -1339716113i32, - desc: "".into(), - name: "Paint Mixer".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Output".into(), typ : Class::Bottle }] - .into_iter() - .collect(), - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemSoyOil".into(), "ReagentColorBlue".into(), - "ReagentColorGreen".into(), "ReagentColorOrange".into(), - "ReagentColorRed".into(), "ReagentColorYellow".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - } - .into(), - ), - ( - -1303038067i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "AppliancePlantGeneticAnalyzer".into(), - prefab_hash: -1303038067i32, - desc: "The Genetic Analyzer can be used to process samples from the Plant Sampler. Once processed, the genetic information of the sampled plant can be viewed by clicking on the search button.\n\nIndividual Gene Value Widgets: \nMost gene values will appear as a sliding bar between a minimum value on the left and a maximum value on the right. The actual value of the gene is in the middle of the bar, in orange.\n\nMultiple Gene Value Widgets: \nFor temperature and pressure ranges, four genes appear on the same widget. The orange values underneath the bar are the minimum and maximum thresholds for growth. Outside of this range, the plant will stop growing and eventually die. The blue values underneath the bar are the minimum and maximum thresholds for ideal growth. Inside of this range, the plant will grow at maximum speed. The white values above the bar are the minimum and maximum achievable values for the growth threshold." - .into(), - name: "Plant Genetic Analyzer".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Input".into(), typ : Class::Tool }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1094868323i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "AppliancePlantGeneticSplicer".into(), - prefab_hash: -1094868323i32, - desc: "The Genetic Splicer can be used to copy a single gene from one \'source\' plant to another \'target\' plant of the same type. After copying, the source plant will be destroyed.\n \nTo begin splicing, place a plant or seed bag in the left slot (source) and place another plant or seed bag of the same type in the right slot (target). You can select a gene using the arrow buttons. Close the sliding door and press the green activate button. Once splicing has begun, the device will be locked until the process has finished (which will take approximately twenty minutes). If you want to cancel splicing you can power off the bench or detach the appliance as a last resort." - .into(), - name: "Plant Genetic Splicer".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Source Plant".into(), typ : Class::Plant }, - SlotInfo { name : "Target Plant".into(), typ : Class::Plant } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 871432335i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "AppliancePlantGeneticStabilizer".into(), - prefab_hash: 871432335i32, - desc: "The Genetic Stabilizer can be used to manipulate gene stability on a specific Plants or Seeds. It has two modes Stabilize and Destabilize.\nStabilize: Increases all genes stability by 50%.\nDestabilize: Decreases all gene stability by 10% other than a chosen gene which will received decreased stability by 50%.\n " - .into(), - name: "Plant Genetic Stabilizer".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Plant".into(), typ : Class::Plant }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1260918085i32, - ItemConsumerTemplate { - prefab: PrefabInfo { - prefab_name: "ApplianceReagentProcessor".into(), - prefab_hash: 1260918085i32, - desc: "Sitting somewhere between a high powered juicer and an alchemist\'s alembic, the Xigo reagent processor turns certain raw materials and food items into cooking and crafting ingredients. Indispensible in any space kitchen, just bolt it to the bench, and you\'re ready to go." - .into(), - name: "Reagent Processor".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Input".into(), typ : Class::None }, SlotInfo { - name : "Output".into(), typ : Class::None } - ] - .into_iter() - .collect(), - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemWheat".into(), "ItemSugarCane".into(), "ItemCocoaTree" - .into(), "ItemSoybean".into(), "ItemFlowerBlue".into(), - "ItemFlowerGreen".into(), "ItemFlowerOrange".into(), - "ItemFlowerRed".into(), "ItemFlowerYellow".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - } - .into(), - ), - ( - 142831994i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ApplianceSeedTray".into(), - prefab_hash: 142831994i32, - desc: "The seed tray can hold up to twelve plants or seeds and can be used to facilitate fast experimentation and testing of plant genetics." - .into(), - name: "Appliance Seed Tray".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { - name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : - "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" - .into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ - : Class::Plant }, SlotInfo { name : "Plant".into(), typ : - Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant - }, SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { - name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : - "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" - .into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ - : Class::Plant } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1853941363i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ApplianceTabletDock".into(), - prefab_hash: 1853941363i32, - desc: "".into(), - name: "Tablet Dock".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Appliance, - sorting_class: SortingClass::Appliances, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::Tool } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 221058307i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "AutolathePrinterMod".into(), - prefab_hash: 221058307i32, - desc: "Apply to an Autolathe with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." - .into(), - name: "Autolathe Printer Mod".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -462415758i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "Battery_Wireless_cell".into(), - prefab_hash: -462415758i32, - desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" - .into(), - name: "Battery Wireless Cell".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Battery, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Mode, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - -41519077i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "Battery_Wireless_cell_Big".into(), - prefab_hash: -41519077i32, - desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" - .into(), - name: "Battery Wireless Cell (Big)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Battery, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Mode, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - -1976947556i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "CardboardBox".into(), - prefab_hash: -1976947556i32, - desc: "".into(), - name: "Cardboard Box".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Storage, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1634532552i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeAccessController".into(), - prefab_hash: -1634532552i32, - desc: "".into(), - name: "Cartridge (Access Controller)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1550278665i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeAtmosAnalyser".into(), - prefab_hash: -1550278665i32, - desc: "The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by ExMin for use with the OreCore Handheld Tablet. It displays the pressure, concentration and molar quantity of gas in rooms, tanks, or pipe networks." - .into(), - name: "Atmos Analyzer".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -932136011i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeConfiguration".into(), - prefab_hash: -932136011i32, - desc: "".into(), - name: "Configuration".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1462180176i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeElectronicReader".into(), - prefab_hash: -1462180176i32, - desc: "".into(), - name: "eReader".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1957063345i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeGPS".into(), - prefab_hash: -1957063345i32, - desc: "".into(), - name: "GPS".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 872720793i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeGuide".into(), - prefab_hash: 872720793i32, - desc: "".into(), - name: "Guide".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1116110181i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeMedicalAnalyser".into(), - prefab_hash: -1116110181i32, - desc: "When added to the OreCore Handheld Tablet, Asura\'s\'s ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users." - .into(), - name: "Medical Analyzer".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1606989119i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeNetworkAnalyser".into(), - prefab_hash: 1606989119i32, - desc: "A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied Sinotai design, it\'s used in conjunction with the OreCore Handheld Tablet." - .into(), - name: "Network Analyzer".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1768732546i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeOreScanner".into(), - prefab_hash: -1768732546i32, - desc: "When inserted into a Handheld Tablet the scanner will display minerals hidden underground on the tablet." - .into(), - name: "Ore Scanner".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1738236580i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeOreScannerColor".into(), - prefab_hash: 1738236580i32, - desc: "When inserted into a Handheld Tablet the scanner will display minerals hidden underground in different colors on the tablet." - .into(), - name: "Ore Scanner (Color)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1101328282i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgePlantAnalyser".into(), - prefab_hash: 1101328282i32, - desc: "".into(), - name: "Cartridge Plant Analyser".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 81488783i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CartridgeTracker".into(), - prefab_hash: 81488783i32, - desc: "".into(), - name: "Tracker".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Cartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1633663176i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardAdvAirlockControl".into(), - prefab_hash: 1633663176i32, - desc: "".into(), - name: "Advanced Airlock".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1618019559i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardAirControl".into(), - prefab_hash: 1618019559i32, - desc: "When added to a Console, air control circuit boards allow you to program an Active Vent. As with small dogs and 83% of people, air control circuits have only three modes: Pressure, Draft and Offline. Pressure mode maintains a 100kPa atmosphere, switching the active vent between inward and outward flow until target pressure is achieved. Draft mode allows you to pair active vents to circulate air. Offline mode deactivates the vent. " - .into(), - name: "Air Control".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 912176135i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardAirlockControl".into(), - prefab_hash: 912176135i32, - desc: "Rumored to have been first sketched on a Norsec toilet wall by a disgruntled engineer, the Exgress airlock control circuit board\u{2019}s versatility and ease of fabrication has made it the Stationeers control system of choice for Airlock cycling protocols. \n\nTo enter setup mode, insert the board into a Console along with a data disk. In this mode, you can see all data-accessible objects currently connected to the Console. Doors, lights, gas sensors and slave consoles can be selected (highlighted green), and will be controlled once the data disk is removed." - .into(), - name: "Airlock".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -412104504i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardCameraDisplay".into(), - prefab_hash: -412104504i32, - desc: "Surveillance is sometimes necessary when building bases in highly hostile environments. The camera display circuit board allows wary Stationeers to turn a Console into a security display when connected to a Camera." - .into(), - name: "Camera Display".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 855694771i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardDoorControl".into(), - prefab_hash: 855694771i32, - desc: "A basic tool of Stationeer base construction, this circuit board provides a way to open and close a Composite Door, Blast Door or Glass Door remotely, when connected to a Console. This system can be further linked to Motion Sensor to create automatic doors." - .into(), - name: "Door Control".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -82343730i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardGasDisplay".into(), - prefab_hash: -82343730i32, - desc: "Information is power. Place this circuitboard into a Console to create a display that shows gas pressure or temperature of any connected tank, storage cannister, Kit (Pipe Analyzer) or Kit (Gas Sensor)." - .into(), - name: "Gas Display".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1344368806i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardGraphDisplay".into(), - prefab_hash: 1344368806i32, - desc: "".into(), - name: "Graph Display".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1633074601i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardHashDisplay".into(), - prefab_hash: 1633074601i32, - desc: "".into(), - name: "Hash Display".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1134148135i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardModeControl".into(), - prefab_hash: -1134148135i32, - desc: "Can\'t decide which mode you love most? This circuit board allows you to switch any connected device between operation modes." - .into(), - name: "Mode Control".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1923778429i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardPowerControl".into(), - prefab_hash: -1923778429i32, - desc: "Under distant suns and demanding environments, Stationeer systems need to balance reliability, resilience and versatility. The power control board allows remote enabling and disabling of selected devices, disconnecting manual operation. \n \nThe circuit board has two modes: \'Link\' switches all devices on or off; \'Toggle\' switches each device to their alternate state. " - .into(), - name: "Power Control".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2044446819i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardShipDisplay".into(), - prefab_hash: -2044446819i32, - desc: "When the original Stationeer Handbook collapsed under its own weight into a singularity, certain information was irretrievably lost. Amongst this mysterious corpus of knowledge is the exact purpose of the ship display board." - .into(), - name: "Ship Display".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2020180320i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "CircuitboardSolarControl".into(), - prefab_hash: 2020180320i32, - desc: "Adding a solar control board to a Console lets you manually control the horizontal and vertical angles of any connected Solar Panel." - .into(), - name: "Solar Control".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1228794916i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "CompositeRollCover".into(), - prefab_hash: 1228794916i32, - desc: "0.Operate\n1.Logic".into(), - name: "Composite Roll Cover".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 8709219i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "CrateMkII".into(), - prefab_hash: 8709219i32, - desc: "A more heavily reinforced version of the iconic Dynamic Crate, the Crate Mk II is resistant to incredibly high pressures and temperatures. Short of disposing of it in a black hole, the Mk II is about as safe as luggage gets." - .into(), - name: "Crate Mk II".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Storage, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1531087544i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "DecayedFood".into(), - prefab_hash: 1531087544i32, - desc: "When your food decays, it turns into this. ODA scientists have attempted to determine the exact constituents of this substance, but it remains evasive and mysterious. Suffice to say, eating it is a bad idea. Research has determined, however, that The exact speed of decay varies individually by:\n\n- TEMPERATURE - Refrigeration will slow decay, but many foods will be damaged by exposure to extreme low pressure, as well as extreme heat. The optimum temperature is 0 kelvin (-272 C).\n\n- FOOD TYPE - Each food type has its own decay properties. Tomato Soup lasts a lot longer than a Tomato, for instance.\n\n- PRESSURE - Food decays faster when the pressure drops below 1 atmosphere (101kPa). Decay happens exponentially more quickly as the atmosphere approaches a perfect vacuum. There is no effect from higher pressures. \n\n- ATMOSPHERE - Different gases can slow and accelerate the decay process. The process will take account of respective gas ratios in mixed atmospheres in calculating the decay modifier. The following rates apply across all foods:\n\n> Oxygen x 1.3\n> Nitrogen x 0.6\n> Carbon Dioxide x 0.8\n> Volatiles x 1\n> Pollutant x 3\n> Nitrous Oxide x 1.5\n> Steam x 2\n> Vacuum (see PRESSURE above)\n\n" - .into(), - name: "Decayed Food".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 25u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1844430312i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "DeviceLfoVolume".into(), - prefab_hash: -1844430312i32, - desc: "The low frequency oscillator (or LFO) makes everything sound dark, twisted and crunchy by altering the shape of the waves output by a Logic Step Sequencer.\n \nTo set up an LFO:\n\n1. Place the LFO unit\n2. Set the LFO output to a Passive Speaker\n2. Set a sequencers\' output to LFO - so the sequencer\'s signal runs through the LFO to a speaker.\n3. Place a Stop Watch or use an existing one, then use a Logic Writer to write it to the LFO.\n4. Use another logic writer to write the BPM to the LFO.\n5. You are ready. This is the future. You\'re in space. Make it sound cool.\n\nFor more info, check out the music page." - .into(), - name: "Low frequency oscillator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Time, MemoryAccess::ReadWrite), (LogicType::Bpm, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Whole Note".into()), (1u32, "Half Note".into()), - (2u32, "Quarter Note".into()), (3u32, "Eighth Note".into()), - (4u32, "Sixteenth Note".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1762696475i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "DeviceStepUnit".into(), - prefab_hash: 1762696475i32, - desc: "0.C-2\n1.C#-2\n2.D-2\n3.D#-2\n4.E-2\n5.F-2\n6.F#-2\n7.G-2\n8.G#-2\n9.A-2\n10.A#-2\n11.B-2\n12.C-1\n13.C#-1\n14.D-1\n15.D#-1\n16.E-1\n17.F-1\n18.F#-1\n19.G-1\n20.G#-1\n21.A-1\n22.A#-1\n23.B-1\n24.C0\n25.C#0\n26.D0\n27.D#0\n28.E0\n29.F0\n30.F#0\n31.G0\n32.G#0\n33.A0\n34.A#0\n35.B0\n36.C1\n37.C#1\n38.D1\n39.D#1\n40.E1\n41.F1\n42.F#1\n43.G1\n44.G#1\n45.A1\n46.A#1\n47.B1\n48.C2\n49.C#2\n50.D2\n51.D#2\n52.E2\n53.F2\n54.F#2\n55.G2\n56.G#2\n57.A2\n58.A#2\n59.B2\n60.C3\n61.C#3\n62.D3\n63.D#3\n64.E3\n65.F3\n66.F#3\n67.G3\n68.G#3\n69.A3\n70.A#3\n71.B3\n72.C4\n73.C#4\n74.D4\n75.D#4\n76.E4\n77.F4\n78.F#4\n79.G4\n80.G#4\n81.A4\n82.A#4\n83.B4\n84.C5\n85.C#5\n86.D5\n87.D#5\n88.E5\n89.F5\n90.F#5\n91.G5 \n92.G#5\n93.A5\n94.A#5\n95.B5\n96.C6\n97.C#6\n98.D6\n99.D#6\n100.E6\n101.F6\n102.F#6\n103.G6\n104.G#6\n105.A6\n106.A#6\n107.B6\n108.C7\n109.C#7\n110.D7\n111.D#7\n112.E7\n113.F7\n114.F#7\n115.G7\n116.G#7\n117.A7\n118.A#7\n119.B7\n120.C8\n121.C#8\n122.D8\n123.D#8\n124.E8\n125.F8\n126.F#8\n127.G8" - .into(), - name: "Device Step Unit".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "C-2".into()), (1u32, "C#-2".into()), (2u32, "D-2" - .into()), (3u32, "D#-2".into()), (4u32, "E-2".into()), (5u32, - "F-2".into()), (6u32, "F#-2".into()), (7u32, "G-2".into()), - (8u32, "G#-2".into()), (9u32, "A-2".into()), (10u32, "A#-2" - .into()), (11u32, "B-2".into()), (12u32, "C-1".into()), - (13u32, "C#-1".into()), (14u32, "D-1".into()), (15u32, "D#-1" - .into()), (16u32, "E-1".into()), (17u32, "F-1".into()), - (18u32, "F#-1".into()), (19u32, "G-1".into()), (20u32, "G#-1" - .into()), (21u32, "A-1".into()), (22u32, "A#-1".into()), - (23u32, "B-1".into()), (24u32, "C0".into()), (25u32, "C#0" - .into()), (26u32, "D0".into()), (27u32, "D#0".into()), - (28u32, "E0".into()), (29u32, "F0".into()), (30u32, "F#0" - .into()), (31u32, "G0".into()), (32u32, "G#0".into()), - (33u32, "A0".into()), (34u32, "A#0".into()), (35u32, "B0" - .into()), (36u32, "C1".into()), (37u32, "C#1".into()), - (38u32, "D1".into()), (39u32, "D#1".into()), (40u32, "E1" - .into()), (41u32, "F1".into()), (42u32, "F#1".into()), - (43u32, "G1".into()), (44u32, "G#1".into()), (45u32, "A1" - .into()), (46u32, "A#1".into()), (47u32, "B1".into()), - (48u32, "C2".into()), (49u32, "C#2".into()), (50u32, "D2" - .into()), (51u32, "D#2".into()), (52u32, "E2".into()), - (53u32, "F2".into()), (54u32, "F#2".into()), (55u32, "G2" - .into()), (56u32, "G#2".into()), (57u32, "A2".into()), - (58u32, "A#2".into()), (59u32, "B2".into()), (60u32, "C3" - .into()), (61u32, "C#3".into()), (62u32, "D3".into()), - (63u32, "D#3".into()), (64u32, "E3".into()), (65u32, "F3" - .into()), (66u32, "F#3".into()), (67u32, "G3".into()), - (68u32, "G#3".into()), (69u32, "A3".into()), (70u32, "A#3" - .into()), (71u32, "B3".into()), (72u32, "C4".into()), (73u32, - "C#4".into()), (74u32, "D4".into()), (75u32, "D#4".into()), - (76u32, "E4".into()), (77u32, "F4".into()), (78u32, "F#4" - .into()), (79u32, "G4".into()), (80u32, "G#4".into()), - (81u32, "A4".into()), (82u32, "A#4".into()), (83u32, "B4" - .into()), (84u32, "C5".into()), (85u32, "C#5".into()), - (86u32, "D5".into()), (87u32, "D#5".into()), (88u32, "E5" - .into()), (89u32, "F5".into()), (90u32, "F#5".into()), - (91u32, "G5 ".into()), (92u32, "G#5".into()), (93u32, "A5" - .into()), (94u32, "A#5".into()), (95u32, "B5".into()), - (96u32, "C6".into()), (97u32, "C#6".into()), (98u32, "D6" - .into()), (99u32, "D#6".into()), (100u32, "E6".into()), - (101u32, "F6".into()), (102u32, "F#6".into()), (103u32, "G6" - .into()), (104u32, "G#6".into()), (105u32, "A6".into()), - (106u32, "A#6".into()), (107u32, "B6".into()), (108u32, "C7" - .into()), (109u32, "C#7".into()), (110u32, "D7".into()), - (111u32, "D#7".into()), (112u32, "E7".into()), (113u32, "F7" - .into()), (114u32, "F#7".into()), (115u32, "G7".into()), - (116u32, "G#7".into()), (117u32, "A7".into()), (118u32, "A#7" - .into()), (119u32, "B7".into()), (120u32, "C8".into()), - (121u32, "C#8".into()), (122u32, "D8".into()), (123u32, "D#8" - .into()), (124u32, "E8".into()), (125u32, "F8".into()), - (126u32, "F#8".into()), (127u32, "G8".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 519913639i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicAirConditioner".into(), - prefab_hash: 519913639i32, - desc: "The Sinotai-designed Huxi portable air conditioner cools by drawing heat from the atmosphere and storing it, or adding heat to the atmosphere from its internal tank. With a max internal pressure of 8106kPa, its capacity is relatively limited, physics being clear on this subject. To extend its temperature storage ability, bolt the Huxi to a Tank Connector, then connect it to a pipe network supplying hot or cold gases." - .into(), - name: "Portable Air Conditioner".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1941079206i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicCrate".into(), - prefab_hash: 1941079206i32, - desc: "The humble dynamic crate has become a symbol of Stationeer invention and independence. With twelve slots and handles at either end for ease of carriage, it\'s both standard issue and critical kit for cadets and Commanders alike." - .into(), - name: "Dynamic Crate".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Storage, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -2085885850i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGPR".into(), - prefab_hash: -2085885850i32, - desc: "".into(), - name: "".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1713611165i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterAir".into(), - prefab_hash: -1713611165i32, - desc: "Portable gas tanks do one thing: store gas. But there\'s lots you can do with them. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it\'s full, you can refill a Canister (Oxygen) by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere. They also attach to rovers and rockets. Alternatively, kick it over and practice barrel rolling. The possibilities are endless." - .into(), - name: "Portable Gas Tank (Air)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -322413931i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterCarbonDioxide".into(), - prefab_hash: -322413931i32, - desc: "Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or ... boom. Once it\'s full, you can refill a Canister (CO2) by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere ... of sorts." - .into(), - name: "Portable Gas Tank (CO2)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1741267161i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterEmpty".into(), - prefab_hash: -1741267161i32, - desc: "Portable gas tanks store gas. To refill one, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it\'s full, you can refill a Canister by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere." - .into(), - name: "Portable Gas Tank".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -817051527i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterFuel".into(), - prefab_hash: -817051527i32, - desc: "Portable tanks store gas. They\'re good at it. If you need to refill a tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or things get messy. You can refill a Canister (Fuel) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rover or rocket for later. It\'s really up to you." - .into(), - name: "Portable Gas Tank (Fuel)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 121951301i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterNitrogen".into(), - prefab_hash: 121951301i32, - desc: "Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you\'ll end up with Nitrogen in places you weren\'t expecting. You can refill a Canister (Nitrogen) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rover or rocket for later." - .into(), - name: "Portable Gas Tank (Nitrogen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 30727200i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterNitrousOxide".into(), - prefab_hash: 30727200i32, - desc: "".into(), - name: "Portable Gas Tank (Nitrous Oxide)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1360925836i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterOxygen".into(), - prefab_hash: 1360925836i32, - desc: "Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you\'ll be picking tank shards out of your face. You can refill a Canister (Oxygen) by attaching it to the tank\'s striped section. Or you could vent it into a sealed room to create an atmosphere. Or even paint it pink, call it Steve and fill that sad space in your heart." - .into(), - name: "Portable Gas Tank (Oxygen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 396065382i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterPollutants".into(), - prefab_hash: 396065382i32, - desc: "".into(), - name: "Portable Gas Tank (Pollutants)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -8883951i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterRocketFuel".into(), - prefab_hash: -8883951i32, - desc: "".into(), - name: "Dynamic Gas Canister Rocket Fuel".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 108086870i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterVolatiles".into(), - prefab_hash: 108086870i32, - desc: "Portable tanks store gas. To refill one, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Don\'t fill it above 10 MPa, unless you\'re the sort who loves complicated, flammable emergencies. You can refill a Canister (Volatiles) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach to a rocket and show it around the Solar System." - .into(), - name: "Portable Gas Tank (Volatiles)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 197293625i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasCanisterWater".into(), - prefab_hash: 197293625i32, - desc: "This portable tank stores liquid, and liquid only. You just have to fill it up. To do this, bolt one to a Kit (Tank Connector) using a Wrench, then connect it to Liquid Pipe (Straight) to supply liquid to a network. \nTry to keep pressure under 10 MPa, or you\'ll end up wet, hurt and sorry, without any of the fun.\nYou can refill a Liquid Canister (Water) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself." - .into(), - name: "Portable Liquid Tank (Water)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Gas Canister".into(), typ : Class::LiquidCanister - } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -386375420i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasTankAdvanced".into(), - prefab_hash: -386375420i32, - desc: "0.Mode0\n1.Mode1".into(), - name: "Gas Tank Mk II".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1264455519i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGasTankAdvancedOxygen".into(), - prefab_hash: -1264455519i32, - desc: "0.Mode0\n1.Mode1".into(), - name: "Portable Gas Tank Mk II (Oxygen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -82087220i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicGenerator".into(), - prefab_hash: -82087220i32, - desc: "Every Stationeer\'s best friend, the portable generator gets you up and running, fast. Fill it with a Canister (Fuel) to power up and charge a Battery Cell (Small), or attach it to a Power Connector to link it into your electrical network. It\'s pressure driven, so functions more efficiently at lower temperatures, and REALLY efficiently if supercooled. Perfecting your fuel mix also makes a big difference." - .into(), - name: "Portable Generator".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister }, - SlotInfo { name : "Battery".into(), typ : Class::Battery } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 587726607i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicHydroponics".into(), - prefab_hash: 587726607i32, - desc: "".into(), - name: "Portable Hydroponics".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { - name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : - "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" - .into(), typ : Class::Plant }, SlotInfo { name : "Liquid Canister" - .into(), typ : Class::LiquidCanister }, SlotInfo { name : - "Liquid Canister".into(), typ : Class::Plant }, SlotInfo { name : - "Liquid Canister".into(), typ : Class::Plant }, SlotInfo { name : - "Liquid Canister".into(), typ : Class::Plant }, SlotInfo { name : - "Liquid Canister".into(), typ : Class::Plant } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -21970188i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicLight".into(), - prefab_hash: -21970188i32, - desc: "Philippe Starck might not applaud, but this battery-powered light source undarkens the corners when illumination\'s lacking. Powered by any battery, it\'s a \'no-frills\' Xigo design that can be cheaply fabricated with the minimum of fuss. Unless you like fuss. In which case, fuss all you like." - .into(), - name: "Portable Light".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1939209112i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicLiquidCanisterEmpty".into(), - prefab_hash: -1939209112i32, - desc: "This portable tank stores liquid, and liquid only. You can bolt one to a Kit (Liquid Tank Connector) using a Wrench, then connect it to a pipe network to refill it. You can refill a Liquid Canister (Water) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself." - .into(), - name: "Portable Liquid Tank".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.025f32, - radiation_factor: 0.025f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Liquid Canister".into(), typ : - Class::LiquidCanister } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 2130739600i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicMKIILiquidCanisterEmpty".into(), - prefab_hash: 2130739600i32, - desc: "An empty, insulated liquid Gas Canister." - .into(), - name: "Portable Liquid Tank Mk II".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Liquid Canister".into(), typ : - Class::LiquidCanister } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -319510386i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicMKIILiquidCanisterWater".into(), - prefab_hash: -319510386i32, - desc: "An insulated version of the Portable Liquid Tank Mk II (Water), for storing liquids without them gaining or losing temperature." - .into(), - name: "Portable Liquid Tank Mk II (Water)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Liquid Canister".into(), typ : - Class::LiquidCanister } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 755048589i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicScrubber".into(), - prefab_hash: 755048589i32, - desc: "A portable scrubber does just what it sounds like: removes specific substances from the air. For instance, attaching a Filter (Carbon Dioxide) will pull Carbon Dioxide from the surrounding atmosphere. Note that the scrubber has room for one battery and two filters, which will double its operating speed. Neat. When it reaches an internal pressure of 8106kPA, an error signal will flash on the switch, indicating it needs to be emptied. Either vent it directly, or attach it to a pipe network via a Kit (Tank Connector) and a Wrench." - .into(), - name: "Portable Air Scrubber".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { - name : "Gas Filter".into(), typ : Class::GasFilter } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 106953348i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "DynamicSkeleton".into(), - prefab_hash: 106953348i32, - desc: "".into(), - name: "Skeleton".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -311170652i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ElectronicPrinterMod".into(), - prefab_hash: -311170652i32, - desc: "Apply to an Electronics Printer with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." - .into(), - name: "Electronic Printer Mod".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -110788403i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ElevatorCarrage".into(), - prefab_hash: -110788403i32, - desc: "".into(), - name: "Elevator".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1730165908i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "EntityChick".into(), - prefab_hash: 1730165908i32, - desc: "Once a chick is hatched, it gets hungry. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not." - .into(), - name: "Entity Chick".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 334097180i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "EntityChickenBrown".into(), - prefab_hash: 334097180i32, - desc: "Like so many of its brethren, this is a chicken. A brown one. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not." - .into(), - name: "Entity Chicken Brown".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1010807532i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "EntityChickenWhite".into(), - prefab_hash: 1010807532i32, - desc: "It\'s a chicken, as white as moondust. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not." - .into(), - name: "Entity Chicken White".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 966959649i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "EntityRoosterBlack".into(), - prefab_hash: 966959649i32, - desc: "This is a rooster. It is black. There is dignity in this." - .into(), - name: "Entity Rooster Black".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -583103395i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "EntityRoosterBrown".into(), - prefab_hash: -583103395i32, - desc: "The common brown rooster. Don\'t let it hear you say that." - .into(), - name: "Entity Rooster Brown".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1517856652i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "Fertilizer".into(), - prefab_hash: 1517856652i32, - desc: "Fertilizer alters plant growth processes, and is created by the basic composter and the Advanced Composter using organic matter.\nFertilizer\'s affects depend on its ingredients:\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for\n\nThe effect of these ingredients depends on their respective proportions in the composter when processing is activated. " - .into(), - name: "Fertilizer".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -86315541i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "FireArmSMG".into(), - prefab_hash: -86315541i32, - desc: "0.Single\n1.Auto".into(), - name: "Fire Arm SMG".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "".into(), typ : Class::Magazine }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1845441951i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Flag_ODA_10m".into(), - prefab_hash: 1845441951i32, - desc: "".into(), - name: "Flag (ODA 10m)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1159126354i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Flag_ODA_4m".into(), - prefab_hash: 1159126354i32, - desc: "".into(), - name: "Flag (ODA 4m)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1998634960i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Flag_ODA_6m".into(), - prefab_hash: 1998634960i32, - desc: "".into(), - name: "Flag (ODA 6m)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -375156130i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Flag_ODA_8m".into(), - prefab_hash: -375156130i32, - desc: "".into(), - name: "Flag (ODA 8m)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 118685786i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "FlareGun".into(), - prefab_hash: 118685786i32, - desc: "".into(), - name: "Flare Gun".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Magazine".into(), typ : Class::Flare }, SlotInfo { - name : "".into(), typ : Class::Blocked } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1840108251i32, - StructureCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "H2Combustor".into(), - prefab_hash: 1840108251i32, - desc: "Adapted slightly from its original Recurso design, the Volatiles Combustor does exactly what its name suggests - it burns a mixture of volatiles and Oxygen to create water. Extremely useful in hot or arid environments, users need to be aware that the combustor outputs considerable waste heat. The device is also less than perfectly efficient, resulting in the autoignition of volatiles in the chamber, and the production of waste gases which must be dealt with." - .into(), - name: "H2 Combustor".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::PressureInput, MemoryAccess::Read), - (LogicType::TemperatureInput, MemoryAccess::Read), - (LogicType::RatioOxygenInput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioNitrogenInput, MemoryAccess::Read), - (LogicType::RatioPollutantInput, MemoryAccess::Read), - (LogicType::RatioVolatilesInput, MemoryAccess::Read), - (LogicType::RatioWaterInput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), - (LogicType::TotalMolesInput, MemoryAccess::Read), - (LogicType::PressureOutput, MemoryAccess::Read), - (LogicType::TemperatureOutput, MemoryAccess::Read), - (LogicType::RatioOxygenOutput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioPollutantOutput, MemoryAccess::Read), - (LogicType::RatioVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioWaterOutput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), - (LogicType::TotalMolesOutput, MemoryAccess::Read), - (LogicType::CombustionInput, MemoryAccess::Read), - (LogicType::CombustionOutput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioSteamInput, MemoryAccess::Read), - (LogicType::RatioSteamOutput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Programmable Chip".into(), typ : - Class::ProgrammableChip } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: Some(2u32), - has_activate_state: true, - has_atmosphere: true, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 247238062i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "Handgun".into(), - prefab_hash: 247238062i32, - desc: "".into(), - name: "Handgun".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Magazine".into(), typ : Class::Magazine }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1254383185i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "HandgunMagazine".into(), - prefab_hash: 1254383185i32, - desc: "".into(), - name: "Handgun Magazine".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Magazine, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -857713709i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "HumanSkull".into(), - prefab_hash: -857713709i32, - desc: "".into(), - name: "Human Skull".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -73796547i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ImGuiCircuitboardAirlockControl".into(), - prefab_hash: -73796547i32, - desc: "".into(), - name: "Airlock (Experimental)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Circuitboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -842048328i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemActiveVent".into(), - prefab_hash: -842048328i32, - desc: "When constructed, this kit places an Active Vent on any support structure." - .into(), - name: "Kit (Active Vent)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1871048978i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAdhesiveInsulation".into(), - prefab_hash: 1871048978i32, - desc: "".into(), - name: "Adhesive Insulation".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 20u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1722785341i32, - ItemCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAdvancedTablet".into(), - prefab_hash: 1722785341i32, - desc: "The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Atmos Analyzer, Tracker, Medical Analyzer, Ore Scanner, eReader, and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter" - .into(), - name: "Advanced Tablet".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), (LogicType::Volume, - MemoryAccess::ReadWrite), (LogicType::SoundAlert, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: true, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Cartridge".into(), typ : Class::Cartridge }, SlotInfo { - name : "Cartridge1".into(), typ : Class::Cartridge }, SlotInfo { name - : "Programmable Chip".into(), typ : Class::ProgrammableChip } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 176446172i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAlienMushroom".into(), - prefab_hash: 176446172i32, - desc: "".into(), - name: "Alien Mushroom".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -9559091i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAmmoBox".into(), - prefab_hash: -9559091i32, - desc: "".into(), - name: "Ammo Box".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 201215010i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAngleGrinder".into(), - prefab_hash: 201215010i32, - desc: "Angles-be-gone with the trusty angle grinder.".into(), - name: "Angle Grinder".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1385062886i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemArcWelder".into(), - prefab_hash: 1385062886i32, - desc: "".into(), - name: "Arc Welder".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1757673317i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAreaPowerControl".into(), - prefab_hash: 1757673317i32, - desc: "This kit places a Area Power Control (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow." - .into(), - name: "Kit (Power Controller)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 412924554i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAstroloyIngot".into(), - prefab_hash: 412924554i32, - desc: "Due to the original Stationeer manual collapsing into a singularity, Astroloy recipes have been warped by spacetime contortions. The correct Astroloy recipe, as memorialized for all time in a series of charming plastic icons, is 1.0 Copper, 1.0 Cobalt, and 2.0 Steel." - .into(), - name: "Ingot (Astroloy)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some( - vec![("Astroloy".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1662476145i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAstroloySheets".into(), - prefab_hash: -1662476145i32, - desc: "".into(), - name: "Astroloy Sheets".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 789015045i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAuthoringTool".into(), - prefab_hash: 789015045i32, - desc: "".into(), - name: "Authoring Tool".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1731627004i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemAuthoringToolRocketNetwork".into(), - prefab_hash: -1731627004i32, - desc: "".into(), - name: "".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1262580790i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemBasketBall".into(), - prefab_hash: -1262580790i32, - desc: "".into(), - name: "Basket Ball".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 700133157i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemBatteryCell".into(), - prefab_hash: 700133157i32, - desc: "Harnessing a design pioneered in the early 21st century, the small battery cell is the Stationeer\'s basic unit of portable electrical power. While it lacks the charge of a Battery Cell (Large) or Battery Cell (Nuclear), it has the humble advantage of being fabricated from basic resources.\n\nPOWER OUTPUT\nThe small cell stores up to 36000 watts of power." - .into(), - name: "Battery Cell (Small)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Battery, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Mode, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - -459827268i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemBatteryCellLarge".into(), - prefab_hash: -459827268i32, - desc: "First mass-produced by Xigo in 2155 on the basis of a unattributed prototype, the classic silicon anode solid-state design extends its optimum temperature range.\n\nPOWER OUTPUT\nThe large power cell can discharge 288kW of power. \n" - .into(), - name: "Battery Cell (Large)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Battery, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Mode, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - 544617306i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemBatteryCellNuclear".into(), - prefab_hash: 544617306i32, - desc: "Illegal on Earth since the Chengdu Event, Norsec nuclear power cells found a new and drastically less safety-conscious market offworld.\n\nPOWER OUTPUT\nPushing the power-weight balance to its limits, the \'nuke\' has a 2.3 megawatt charge (2304000W), reflecting its reliance on exotic superalloys." - .into(), - name: "Battery Cell (Nuclear)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Battery, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Mode, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - -1866880307i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemBatteryCharger".into(), - prefab_hash: -1866880307i32, - desc: "This kit produces a 5-slot Kit (Battery Charger)." - .into(), - name: "Kit (Battery Charger)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1008295833i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemBatteryChargerSmall".into(), - prefab_hash: 1008295833i32, - desc: "".into(), - name: "Battery Charger Small".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -869869491i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemBeacon".into(), - prefab_hash: -869869491i32, - desc: "".into(), - name: "Tracking Beacon".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -831480639i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemBiomass".into(), - prefab_hash: -831480639i32, - desc: "Diced organic material that is returned when food and organic matter is passed through the Recycler and Centrifuge. Can be burned in a Furnace into Charcoal for use in the Generator (Solid Fuel)." - .into(), - name: "Biomass".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some(vec![("Biomass".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 893514943i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemBreadLoaf".into(), - prefab_hash: 893514943i32, - desc: "".into(), - name: "Bread Loaf".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1792787349i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCableAnalyser".into(), - prefab_hash: -1792787349i32, - desc: "".into(), - name: "Kit (Cable Analyzer)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -466050668i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCableCoil".into(), - prefab_hash: -466050668i32, - desc: "Bodily metaphors are tired and anthropocentric, but it was Frida Stuppen, the first ODA Administrator, who said, \'Let the cabling be as the nerve and the vessel, transmitting power and data alike through systems we forge among the stars.\' Later commentators suggested that she was simply putting a romantic gloss on a piece of dubious economy. Whatever the case, standard cabling is where any Stationeer\'s network begins. \nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." - .into(), - name: "Cable Coil".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2060134443i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCableCoilHeavy".into(), - prefab_hash: 2060134443i32, - desc: "Use heavy cable coil for power systems with large draws. Unlike , which can only safely conduct 5kW, heavy cables can transmit up to 100kW." - .into(), - name: "Cable Coil (Heavy)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 195442047i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCableFuse".into(), - prefab_hash: 195442047i32, - desc: "".into(), - name: "Kit (Cable Fuses)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2104175091i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCannedCondensedMilk".into(), - prefab_hash: -2104175091i32, - desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Condensed Milk and an Empty Can, canned condensed milk is fairly high in nutrition, and does not decay." - .into(), - name: "Canned Condensed Milk".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -999714082i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCannedEdamame".into(), - prefab_hash: -999714082i32, - desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Soybean and an Empty Can, canned edamame beans are fairly high in nutrition, and do not decay." - .into(), - name: "Canned Edamame".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1344601965i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCannedMushroom".into(), - prefab_hash: -1344601965i32, - desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Mushroom and a Empty Can, delicious mushroom soup is fairly high in nutrition, and does not decay." - .into(), - name: "Canned Mushroom".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1161510063i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCannedPowderedEggs".into(), - prefab_hash: 1161510063i32, - desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Powdered Eggs and an Empty Can, canned powdered eggs are an exciting, dynamic food that\'s fairly high in nutrition, and does not decay." - .into(), - name: "Canned Powdered Eggs".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1185552595i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCannedRicePudding".into(), - prefab_hash: -1185552595i32, - desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Rice and an Empty Can, canned rice pudding is a sweet treat, fairly high in nutrition, and does not decay." - .into(), - name: "Canned Rice Pudding".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 791746840i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCerealBar".into(), - prefab_hash: 791746840i32, - desc: "Sustains, without decay. If only all our relationships were so well balanced." - .into(), - name: "Cereal Bar".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 252561409i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCharcoal".into(), - prefab_hash: 252561409i32, - desc: "Charcoal is a lightweight, black carbon residue produced by heating Biomass in a Arc Furnace. It contains less energy potential than Ore (Coal), but can be used as a basic fuel source. Charcoal can also be substituted for coal in alloy recipes." - .into(), - name: "Charcoal".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 200u32, - reagents: Some(vec![("Carbon".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -772542081i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemChemLightBlue".into(), - prefab_hash: -772542081i32, - desc: "A safe and slightly rave-some source of blue light. Snap to activate." - .into(), - name: "Chem Light (Blue)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -597479390i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemChemLightGreen".into(), - prefab_hash: -597479390i32, - desc: "Enliven the dreariest, airless rock with this glowy green light. Snap to activate." - .into(), - name: "Chem Light (Green)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -525810132i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemChemLightRed".into(), - prefab_hash: -525810132i32, - desc: "A red glowstick. Snap to activate. Then reach for the lasers." - .into(), - name: "Chem Light (Red)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1312166823i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemChemLightWhite".into(), - prefab_hash: 1312166823i32, - desc: "Snap the glowstick to activate a pale radiance that keeps the darkness at bay." - .into(), - name: "Chem Light (White)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1224819963i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemChemLightYellow".into(), - prefab_hash: 1224819963i32, - desc: "Dispel the darkness with this yellow glowstick.".into(), - name: "Chem Light (Yellow)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 234601764i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemChocolateBar".into(), - prefab_hash: 234601764i32, - desc: "".into(), - name: "Chocolate Bar".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -261575861i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemChocolateCake".into(), - prefab_hash: -261575861i32, - desc: "".into(), - name: "Chocolate Cake".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 860793245i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemChocolateCerealBar".into(), - prefab_hash: 860793245i32, - desc: "".into(), - name: "Chocolate Cereal Bar".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1724793494i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCoalOre".into(), - prefab_hash: 1724793494i32, - desc: "Humanity wouldn\'t have got to space without humble, combustible coal. Burn it in a , smelt it in the Furnace to create alloys, or use it in the Reagent Processor to make Spray Paint (Black)." - .into(), - name: "Ore (Coal)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some( - vec![("Hydrocarbon".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -983091249i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCobaltOre".into(), - prefab_hash: -983091249i32, - desc: "Cobalt is a chemical element with the symbol \"Co\" and is typically found in only small deposits. Cobalt is a rare substance, but used create the Heal Pill and several alloys." - .into(), - name: "Ore (Cobalt)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Cobalt".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 457286516i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCocoaPowder".into(), - prefab_hash: 457286516i32, - desc: "".into(), - name: "Cocoa Powder".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 20u32, - reagents: Some(vec![("Cocoa".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 680051921i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCocoaTree".into(), - prefab_hash: 680051921i32, - desc: "".into(), - name: "Cocoa".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 20u32, - reagents: Some(vec![("Cocoa".into(), 1f64)].into_iter().collect()), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1800622698i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCoffeeMug".into(), - prefab_hash: 1800622698i32, - desc: "".into(), - name: "Coffee Mug".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1058547521i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemConstantanIngot".into(), - prefab_hash: 1058547521i32, - desc: "".into(), - name: "Ingot (Constantan)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some( - vec![("Constantan".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1715917521i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCookedCondensedMilk".into(), - prefab_hash: 1715917521i32, - desc: "A high-nutrient cooked food, which can be canned.".into(), - name: "Condensed Milk".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 10u32, - reagents: Some(vec![("Milk".into(), 100f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1344773148i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCookedCorn".into(), - prefab_hash: 1344773148i32, - desc: "A high-nutrient cooked food, which can be canned.".into(), - name: "Cooked Corn".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 10u32, - reagents: Some(vec![("Corn".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1076892658i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCookedMushroom".into(), - prefab_hash: -1076892658i32, - desc: "A high-nutrient cooked food, which can be canned.".into(), - name: "Cooked Mushroom".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 10u32, - reagents: Some( - vec![("Mushroom".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1712264413i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCookedPowderedEggs".into(), - prefab_hash: -1712264413i32, - desc: "A high-nutrient cooked food, which can be canned.".into(), - name: "Powdered Eggs".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 10u32, - reagents: Some(vec![("Egg".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1849281546i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCookedPumpkin".into(), - prefab_hash: 1849281546i32, - desc: "A high-nutrient cooked food, which can be canned.".into(), - name: "Cooked Pumpkin".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 10u32, - reagents: Some(vec![("Pumpkin".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2013539020i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCookedRice".into(), - prefab_hash: 2013539020i32, - desc: "A high-nutrient cooked food, which can be canned.".into(), - name: "Cooked Rice".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 10u32, - reagents: Some(vec![("Rice".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1353449022i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCookedSoybean".into(), - prefab_hash: 1353449022i32, - desc: "A high-nutrient cooked food, which can be canned.".into(), - name: "Cooked Soybean".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 10u32, - reagents: Some(vec![("Soy".into(), 5f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -709086714i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCookedTomato".into(), - prefab_hash: -709086714i32, - desc: "A high-nutrient cooked food, which can be canned.".into(), - name: "Cooked Tomato".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 10u32, - reagents: Some(vec![("Tomato".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -404336834i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCopperIngot".into(), - prefab_hash: -404336834i32, - desc: "Copper ingots are created by smelting Ore (Copper) in the Furnace and Arc Furnace, and used to create a variety of items." - .into(), - name: "Ingot (Copper)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Copper".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -707307845i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCopperOre".into(), - prefab_hash: -707307845i32, - desc: "Copper is a chemical element with the symbol \"Cu\". This common and highly conductive material is found on most astronomical bodies and is used in a variety of manufacturing processes including electronic components, alloys, and wires." - .into(), - name: "Ore (Copper)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Copper".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 258339687i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCorn".into(), - prefab_hash: 258339687i32, - desc: "A long growth time staple crop. Its low requirement for darkness allows for accelerated growing if provided with extra light." - .into(), - name: "Corn".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 20u32, - reagents: Some(vec![("Corn".into(), 1f64)].into_iter().collect()), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 545034114i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCornSoup".into(), - prefab_hash: 545034114i32, - desc: "Made using Cooked Corn and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Faily high in nutrition, canned food does not decay." - .into(), - name: "Corn Soup".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1756772618i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCreditCard".into(), - prefab_hash: -1756772618i32, - desc: "".into(), - name: "Credit Card".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100000u32, - reagents: None, - slot_class: Class::CreditCard, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 215486157i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCropHay".into(), - prefab_hash: 215486157i32, - desc: "".into(), - name: "Hay".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 856108234i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemCrowbar".into(), - prefab_hash: 856108234i32, - desc: "Recurso\'s entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise." - .into(), - name: "Crowbar".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1005843700i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemDataDisk".into(), - prefab_hash: 1005843700i32, - desc: "".into(), - name: "Data Disk".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::DataDisk, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 902565329i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemDirtCanister".into(), - prefab_hash: 902565329i32, - desc: "A container the will fill with Dirt when using a Mining Drill when placed inside a Mining Belt. You can then use this Dirt Canister with the Terrain Manipulator to adjust the terrain to suit your needs." - .into(), - name: "Dirt Canister".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1234745580i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemDirtyOre".into(), - prefab_hash: -1234745580i32, - desc: "Ore mined from bedrock via the Deep Miner which then can be used in the Centrifuge, or Combustion Centrifuge. Once processed, it produces ore in a ratio similar to the average found on the planet\'s surface. " - .into(), - name: "Dirty Ore".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2124435700i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemDisposableBatteryCharger".into(), - prefab_hash: -2124435700i32, - desc: "Consumable battery the recharges your suit battery. If used on a HEM-Droid it will recharge the HEM-Droids internal battery." - .into(), - name: "Disposable Battery Charger".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2009673399i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemDrill".into(), - prefab_hash: 2009673399i32, - desc: "The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature." - .into(), - name: "Hand Drill".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1943134693i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemDuctTape".into(), - prefab_hash: -1943134693i32, - desc: "In the distant past, one of Earth\'s great champions taught a generation of \'Fix-It People\' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage." - .into(), - name: "Duct Tape".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1072914031i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemDynamicAirCon".into(), - prefab_hash: 1072914031i32, - desc: "".into(), - name: "Kit (Portable Air Conditioner)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -971920158i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemDynamicScrubber".into(), - prefab_hash: -971920158i32, - desc: "".into(), - name: "Kit (Portable Scrubber)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -524289310i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEggCarton".into(), - prefab_hash: -524289310i32, - desc: "Within, eggs reside in mysterious, marmoreal silence.".into(), - name: "Egg Carton".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Storage, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::Egg }, SlotInfo { name : "" - .into(), typ : Class::Egg }, SlotInfo { name : "".into(), typ : - Class::Egg }, SlotInfo { name : "".into(), typ : Class::Egg }, - SlotInfo { name : "".into(), typ : Class::Egg }, SlotInfo { name : "" - .into(), typ : Class::Egg } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 731250882i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemElectronicParts".into(), - prefab_hash: 731250882i32, - desc: "".into(), - name: "Electronic Parts".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 20u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 502280180i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemElectrumIngot".into(), - prefab_hash: 502280180i32, - desc: "".into(), - name: "Ingot (Electrum)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some( - vec![("Electrum".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -351438780i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyAngleGrinder".into(), - prefab_hash: -351438780i32, - desc: "".into(), - name: "Emergency Angle Grinder".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1056029600i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyArcWelder".into(), - prefab_hash: -1056029600i32, - desc: "".into(), - name: "Emergency Arc Welder".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 976699731i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyCrowbar".into(), - prefab_hash: 976699731i32, - desc: "".into(), - name: "Emergency Crowbar".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2052458905i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyDrill".into(), - prefab_hash: -2052458905i32, - desc: "".into(), - name: "Emergency Drill".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1791306431i32, - ItemSuitTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyEvaSuit".into(), - prefab_hash: 1791306431i32, - desc: "".into(), - name: "Emergency Eva Suit".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Suit, - sorting_class: SortingClass::Clothing, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.2f32, - radiation_factor: 0.2f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }), - slots: vec![ - SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, - SlotInfo { name : "Waste Tank".into(), typ : Class::GasCanister }, - SlotInfo { name : "Life Support".into(), typ : Class::Battery }, - SlotInfo { name : "Filter".into(), typ : Class::GasFilter }, SlotInfo - { name : "Filter".into(), typ : Class::GasFilter }, SlotInfo { name : - "Filter".into(), typ : Class::GasFilter } - ] - .into_iter() - .collect(), - suit_info: SuitInfo { - hygine_reduction_multiplier: 1f32, - waste_max_pressure: 4053f32, - }, - } - .into(), - ), - ( - -1061510408i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyPickaxe".into(), - prefab_hash: -1061510408i32, - desc: "".into(), - name: "Emergency Pickaxe".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 266099983i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyScrewdriver".into(), - prefab_hash: 266099983i32, - desc: "".into(), - name: "Emergency Screwdriver".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 205916793i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencySpaceHelmet".into(), - prefab_hash: 205916793i32, - desc: "".into(), - name: "Emergency Space Helmet".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Helmet, - sorting_class: SortingClass::Clothing, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 3f32 }), - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::TotalMoles, - MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::ReadWrite), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), - (LogicType::Flush, MemoryAccess::Write), (LogicType::SoundAlert, - MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, - MemoryAccess::Read), (LogicType::RatioLiquidOxygen, - MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, - MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - 1661941301i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyToolBelt".into(), - prefab_hash: 1661941301i32, - desc: "".into(), - name: "Emergency Tool Belt".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Belt, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name - : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" - .into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ : - Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, - SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name - : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" - .into(), typ : Class::Tool } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 2102803952i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyWireCutters".into(), - prefab_hash: 2102803952i32, - desc: "".into(), - name: "Emergency Wire Cutters".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 162553030i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmergencyWrench".into(), - prefab_hash: 162553030i32, - desc: "".into(), - name: "Emergency Wrench".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1013818348i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEmptyCan".into(), - prefab_hash: 1013818348i32, - desc: "Used for making soups when combined with food in the Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay." - .into(), - name: "Empty Can".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 10u32, - reagents: Some(vec![("Steel".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1677018918i32, - ItemSuitTemplate { - prefab: PrefabInfo { - prefab_name: "ItemEvaSuit".into(), - prefab_hash: 1677018918i32, - desc: "The EVA suit is the basic suit Stationeers need to survive in the inhospitable environment of space. For more information on EVA suits, consult the EVA suit guide." - .into(), - name: "Eva Suit".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Suit, - sorting_class: SortingClass::Clothing, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.2f32, - radiation_factor: 0.2f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }), - slots: vec![ - SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, - SlotInfo { name : "Waste Tank".into(), typ : Class::GasCanister }, - SlotInfo { name : "Life Support".into(), typ : Class::Battery }, - SlotInfo { name : "Filter".into(), typ : Class::GasFilter }, SlotInfo - { name : "Filter".into(), typ : Class::GasFilter }, SlotInfo { name : - "Filter".into(), typ : Class::GasFilter } - ] - .into_iter() - .collect(), - suit_info: SuitInfo { - hygine_reduction_multiplier: 1f32, - waste_max_pressure: 4053f32, - }, - } - .into(), - ), - ( - 235361649i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemExplosive".into(), - prefab_hash: 235361649i32, - desc: "".into(), - name: "Remote Explosive".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 892110467i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFern".into(), - prefab_hash: 892110467i32, - desc: "There was a time, when Stationeers had to make Fenoxitone Powder using the Reagent Processor. Recent advances in technology allow you to use equivalent quantities of fern directly in recipes." - .into(), - name: "Fern".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some( - vec![("Fenoxitone".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -383972371i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFertilizedEgg".into(), - prefab_hash: -383972371i32, - desc: "To hatch it requires an incubation temperature of between 35 and 45 degrees Celsius and will hatch into a Chick. If the egg is exposed to tepratures below 10 degrees it will no longer be viable." - .into(), - name: "Egg".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 1u32, - reagents: Some(vec![("Egg".into(), 1f64)].into_iter().collect()), - slot_class: Class::Egg, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 266654416i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFilterFern".into(), - prefab_hash: 266654416i32, - desc: "A fern adapted by Agrizeroto process a much greater volume of Carbon Dioxide into Oxygen than an average plant." - .into(), - name: "Darga Fern".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2011191088i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFlagSmall".into(), - prefab_hash: 2011191088i32, - desc: "".into(), - name: "Kit (Small Flag)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2107840748i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFlashingLight".into(), - prefab_hash: -2107840748i32, - desc: "".into(), - name: "Kit (Flashing Light)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -838472102i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFlashlight".into(), - prefab_hash: -838472102i32, - desc: "A flashlight with a narrow and wide beam options.".into(), - name: "Flashlight".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Low Power".into()), (1u32, "High Power".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -665995854i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFlour".into(), - prefab_hash: -665995854i32, - desc: "Pulverized Wheat, a key ingredient in many foods created by the Microwave and the Kit (Automated Oven)." - .into(), - name: "Flour".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Flour".into(), 50f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1573623434i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFlowerBlue".into(), - prefab_hash: -1573623434i32, - desc: "".into(), - name: "Flower (Blue)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1513337058i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFlowerGreen".into(), - prefab_hash: -1513337058i32, - desc: "".into(), - name: "Flower (Green)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1411986716i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFlowerOrange".into(), - prefab_hash: -1411986716i32, - desc: "".into(), - name: "Flower (Orange)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -81376085i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFlowerRed".into(), - prefab_hash: -81376085i32, - desc: "".into(), - name: "Flower (Red)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1712822019i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFlowerYellow".into(), - prefab_hash: 1712822019i32, - desc: "".into(), - name: "Flower (Yellow)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -57608687i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFrenchFries".into(), - prefab_hash: -57608687i32, - desc: "Because space would suck without \'em.".into(), - name: "Canned French Fries".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1371786091i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemFries".into(), - prefab_hash: 1371786091i32, - desc: "".into(), - name: "French Fries".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -767685874i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterCarbonDioxide".into(), - prefab_hash: -767685874i32, - desc: "".into(), - name: "Canister (CO2)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), - } - .into(), - ), - ( - 42280099i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterEmpty".into(), - prefab_hash: 42280099i32, - desc: "".into(), - name: "Canister".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), - } - .into(), - ), - ( - -1014695176i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterFuel".into(), - prefab_hash: -1014695176i32, - desc: "".into(), - name: "Canister (Fuel)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), - } - .into(), - ), - ( - 2145068424i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterNitrogen".into(), - prefab_hash: 2145068424i32, - desc: "".into(), - name: "Canister (Nitrogen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), - } - .into(), - ), - ( - -1712153401i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterNitrousOxide".into(), - prefab_hash: -1712153401i32, - desc: "".into(), - name: "Gas Canister (Sleeping)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), - } - .into(), - ), - ( - -1152261938i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterOxygen".into(), - prefab_hash: -1152261938i32, - desc: "".into(), - name: "Canister (Oxygen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), - } - .into(), - ), - ( - -1552586384i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterPollutants".into(), - prefab_hash: -1552586384i32, - desc: "".into(), - name: "Canister (Pollutants)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), - } - .into(), - ), - ( - -668314371i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterSmart".into(), - prefab_hash: -668314371i32, - desc: "0.Mode0\n1.Mode1".into(), - name: "Gas Canister (Smart)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), - } - .into(), - ), - ( - -472094806i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterVolatiles".into(), - prefab_hash: -472094806i32, - desc: "".into(), - name: "Canister (Volatiles)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), - } - .into(), - ), - ( - -1854861891i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasCanisterWater".into(), - prefab_hash: -1854861891i32, - desc: "".into(), - name: "Liquid Canister (Water)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::LiquidCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { - volume: 12.1f32, - }), - } - .into(), - ), - ( - 1635000764i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterCarbonDioxide".into(), - prefab_hash: 1635000764i32, - desc: "Given humanity\'s obsession with exhaling Carbon Dioxide, all Stationeers are issued two basic Sinotai Carbon Dioxide Gas Filter as part of their standard deployment kit (SDK). These filters allow passage of Carbon Dioxide into the suit\'s waste Canister, but are also critical components of the Portable Air Scrubber and the Filtration. The Medium Filter (Carbon Dioxide) and Heavy Filter (Carbon Dioxide) are also available." - .into(), - name: "Filter (Carbon Dioxide)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::CarbonDioxide), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -185568964i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterCarbonDioxideInfinite".into(), - prefab_hash: -185568964i32, - desc: "A filter that selectively targets Carbon Dioxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." - .into(), - name: "Catalytic Filter (Carbon Dioxide)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::CarbonDioxide), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1876847024i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterCarbonDioxideL".into(), - prefab_hash: 1876847024i32, - desc: "".into(), - name: "Heavy Filter (Carbon Dioxide)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::CarbonDioxide), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 416897318i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterCarbonDioxideM".into(), - prefab_hash: 416897318i32, - desc: "".into(), - name: "Medium Filter (Carbon Dioxide)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::CarbonDioxide), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 632853248i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterNitrogen".into(), - prefab_hash: 632853248i32, - desc: "Filters are used to capture various gases, which can be disposed of or used elsewhere. Nitrogen is a byproduct of smelting various ores, notably Ice (Nitrice), which may be combined with Oxygen to make a breathable - and considerably less flammable - atmosphere." - .into(), - name: "Filter (Nitrogen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Nitrogen), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 152751131i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterNitrogenInfinite".into(), - prefab_hash: 152751131i32, - desc: "A filter that selectively targets Nitrogen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." - .into(), - name: "Catalytic Filter (Nitrogen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Nitrogen), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1387439451i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterNitrogenL".into(), - prefab_hash: -1387439451i32, - desc: "".into(), - name: "Heavy Filter (Nitrogen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Nitrogen), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -632657357i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterNitrogenM".into(), - prefab_hash: -632657357i32, - desc: "".into(), - name: "Medium Filter (Nitrogen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Nitrogen), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1247674305i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterNitrousOxide".into(), - prefab_hash: -1247674305i32, - desc: "".into(), - name: "Filter (Nitrous Oxide)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::NitrousOxide), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -123934842i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterNitrousOxideInfinite".into(), - prefab_hash: -123934842i32, - desc: "A filter that selectively targets Nitrous Oxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." - .into(), - name: "Catalytic Filter (Nitrous Oxide)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::NitrousOxide), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 465267979i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterNitrousOxideL".into(), - prefab_hash: 465267979i32, - desc: "".into(), - name: "Heavy Filter (Nitrous Oxide)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::NitrousOxide), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1824284061i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterNitrousOxideM".into(), - prefab_hash: 1824284061i32, - desc: "".into(), - name: "Medium Filter (Nitrous Oxide)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::NitrousOxide), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -721824748i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterOxygen".into(), - prefab_hash: -721824748i32, - desc: "Sinotai have cornered the market in filter design. Their trademarked templates are simple to print and highly efficient at capturing various gases, which can be disposed of or used elsewhere. Oxygen is a common byproduct of smelting various ores, but must be filtered of such impurities as Nitrogen using this filter and various devices, such as the Kit (Portable Scrubber)." - .into(), - name: "Filter (Oxygen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Oxygen), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1055451111i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterOxygenInfinite".into(), - prefab_hash: -1055451111i32, - desc: "A filter that selectively targets Oxygen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." - .into(), - name: "Catalytic Filter (Oxygen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Oxygen), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1217998945i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterOxygenL".into(), - prefab_hash: -1217998945i32, - desc: "".into(), - name: "Heavy Filter (Oxygen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Oxygen), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1067319543i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterOxygenM".into(), - prefab_hash: -1067319543i32, - desc: "".into(), - name: "Medium Filter (Oxygen)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Oxygen), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1915566057i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterPollutants".into(), - prefab_hash: 1915566057i32, - desc: "Filters are used to capture various gases, such as waste emissions from a Furnace or Arc Furnace. Adding Sinotai-designed Pollutant filters to a Kit (Portable Scrubber) allows you to isolate this gas, then add it to a pipe network and employ its excellent coolant properties in a Wall Cooler. Try not to inhale." - .into(), - name: "Filter (Pollutant)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Pollutant), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -503738105i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterPollutantsInfinite".into(), - prefab_hash: -503738105i32, - desc: "A filter that selectively targets Pollutants. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." - .into(), - name: "Catalytic Filter (Pollutants)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Pollutant), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1959564765i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterPollutantsL".into(), - prefab_hash: 1959564765i32, - desc: "".into(), - name: "Heavy Filter (Pollutants)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Pollutant), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 63677771i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterPollutantsM".into(), - prefab_hash: 63677771i32, - desc: "".into(), - name: "Medium Filter (Pollutants)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Pollutant), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 15011598i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterVolatiles".into(), - prefab_hash: 15011598i32, - desc: "Filters are used to capture various gases, which can be disposed of or used elsewhere. Volatiles are created by exposing Ice (Volatiles) to heat. The product can then be collected and combined with Oxygen to create fuel, or used within a Furnace to smelt ores and create alloys." - .into(), - name: "Filter (Volatiles)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Volatiles), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1916176068i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterVolatilesInfinite".into(), - prefab_hash: -1916176068i32, - desc: "A filter that selectively targets Volatiles. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." - .into(), - name: "Catalytic Filter (Volatiles)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Volatiles), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1255156286i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterVolatilesL".into(), - prefab_hash: 1255156286i32, - desc: "".into(), - name: "Heavy Filter (Volatiles)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Volatiles), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1037507240i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterVolatilesM".into(), - prefab_hash: 1037507240i32, - desc: "".into(), - name: "Medium Filter (Volatiles)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Volatiles), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1993197973i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterWater".into(), - prefab_hash: -1993197973i32, - desc: "Sinotai filters are used to capture various gases, which can be disposed of, or used elsewhere. Water can be collected by filtering smelted Ice (Water)" - .into(), - name: "Filter (Water)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Steam), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1678456554i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterWaterInfinite".into(), - prefab_hash: -1678456554i32, - desc: "A filter that selectively targets Water. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." - .into(), - name: "Catalytic Filter (Water)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Steam), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2004969680i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterWaterL".into(), - prefab_hash: 2004969680i32, - desc: "".into(), - name: "Heavy Filter (Water)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Steam), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 8804422i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasFilterWaterM".into(), - prefab_hash: 8804422i32, - desc: "".into(), - name: "Medium Filter (Water)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: Some(GasType::Steam), - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::GasFilter, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1717593480i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasSensor".into(), - prefab_hash: 1717593480i32, - desc: "".into(), - name: "Kit (Gas Sensor)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2113012215i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGasTankStorage".into(), - prefab_hash: -2113012215i32, - desc: "This kit produces a Kit (Canister Storage) for refilling a Canister." - .into(), - name: "Kit (Canister Storage)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1588896491i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGlassSheets".into(), - prefab_hash: 1588896491i32, - desc: "A fundamental construction component, glass sheets are created from Silicon. Fabricated on the Autolathe, they are used to make {THING:StructureSolarPanel;Solar Panels}, and many other structures." - .into(), - name: "Glass Sheets".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1068925231i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGlasses".into(), - prefab_hash: -1068925231i32, - desc: "".into(), - name: "Glasses".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Glasses, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 226410516i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGoldIngot".into(), - prefab_hash: 226410516i32, - desc: "There is an enduring paradox at the heart of the Stationeers project: An initiative conceived as \'cut-price space exploration\' uses Gold as a fundamental ingredient in fabricating so much of its equipment and materiel. " - .into(), - name: "Ingot (Gold)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Gold".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1348105509i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGoldOre".into(), - prefab_hash: -1348105509i32, - desc: "Surprisingly common throughout the Solar System, Gold is thought to originate in the heart of supernovas, gathering as dust in the early stages of solar formation, then incorporating into the slowly accreting planetary bodies. Now a prized element in Stationeer construction, Gold is valued not for its beauty, but its reliability: inert, durable, conductive and highly stable, gold\'s strength is that it does nothing." - .into(), - name: "Ore (Gold)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Gold".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1544275894i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemGrenade".into(), - prefab_hash: 1544275894i32, - desc: "Invented by the Romans, who threw Greek Fire at their enemies in ceramic jars, the word \'grenade\' is derived from the Old French word for \'pomegranate\', as many modern grenades resemble this round, many-seeded fruit. Also like many grenades before it, this one goes boom and breaks stuff." - .into(), - name: "Hand Grenade".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 470636008i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHEMDroidRepairKit".into(), - prefab_hash: 470636008i32, - desc: "Repairs damaged HEM-Droids to full health.".into(), - name: "HEMDroid Repair Kit".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 374891127i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHardBackpack".into(), - prefab_hash: 374891127i32, - desc: "This backpack can be useful when you are working inside and don\'t need to fly around." - .into(), - name: "Hardsuit Backpack".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Back, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -412551656i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHardJetpack".into(), - prefab_hash: -412551656i32, - desc: "The Norsec jetpack isn\'t \'technically\' a jetpack at all, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nThe hardsuit jetpack is capable of much higher speeds than the Jetpack Basic - up to 15m/s. Indispensable for building, mining and general movement, it has fourteen storage slots.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move." - .into(), - name: "Hardsuit Jetpack".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Back, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Propellant".into(), typ : Class::GasCanister }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 900366130i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHardMiningBackPack".into(), - prefab_hash: 900366130i32, - desc: "".into(), - name: "Hard Mining Backpack".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Back, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1758310454i32, - ItemSuitCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHardSuit".into(), - prefab_hash: -1758310454i32, - desc: "Connects to Logic Transmitter" - .into(), - name: "Hardsuit".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Suit, - sorting_class: SortingClass::Clothing, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }), - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::FilterType, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::FilterType, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::FilterType, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::FilterType, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::PressureExternal, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), (LogicType::TotalMoles, - MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::ReadWrite), (LogicType::PressureSetting, - MemoryAccess::ReadWrite), (LogicType::TemperatureSetting, - MemoryAccess::ReadWrite), (LogicType::TemperatureExternal, - MemoryAccess::Read), (LogicType::Filtration, - MemoryAccess::ReadWrite), (LogicType::AirRelease, - MemoryAccess::ReadWrite), (LogicType::PositionX, - MemoryAccess::Read), (LogicType::PositionY, MemoryAccess::Read), - (LogicType::PositionZ, MemoryAccess::Read), - (LogicType::VelocityMagnitude, MemoryAccess::Read), - (LogicType::VelocityRelativeX, MemoryAccess::Read), - (LogicType::VelocityRelativeY, MemoryAccess::Read), - (LogicType::VelocityRelativeZ, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::SoundAlert, MemoryAccess::ReadWrite), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::ForwardX, MemoryAccess::Read), (LogicType::ForwardY, - MemoryAccess::Read), (LogicType::ForwardZ, MemoryAccess::Read), - (LogicType::Orientation, MemoryAccess::Read), - (LogicType::VelocityX, MemoryAccess::Read), - (LogicType::VelocityY, MemoryAccess::Read), - (LogicType::VelocityZ, MemoryAccess::Read), - (LogicType::EntityState, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: true, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, - SlotInfo { name : "Waste Tank".into(), typ : Class::GasCanister }, - SlotInfo { name : "Life Support".into(), typ : Class::Battery }, - SlotInfo { name : "Programmable Chip".into(), typ : - Class::ProgrammableChip }, SlotInfo { name : "Filter".into(), typ : - Class::GasFilter }, SlotInfo { name : "Filter".into(), typ : - Class::GasFilter }, SlotInfo { name : "Filter".into(), typ : - Class::GasFilter }, SlotInfo { name : "Filter".into(), typ : - Class::GasFilter } - ] - .into_iter() - .collect(), - suit_info: SuitInfo { - hygine_reduction_multiplier: 1.5f32, - waste_max_pressure: 4053f32, - }, - memory: MemoryInfo { - instructions: None, - memory_access: MemoryAccess::ReadWrite, - memory_size: 0u32, - }, - } - .into(), - ), - ( - -84573099i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHardsuitHelmet".into(), - prefab_hash: -84573099i32, - desc: "The Hardsuit Helmet is similar to the Space Helmet, but can withstand higher temperatures and pressures. It\'s perfect for enduring harsh environments like Venus and Vulcan." - .into(), - name: "Hardsuit Helmet".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Helmet, - sorting_class: SortingClass::Clothing, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 3f32 }), - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::TotalMoles, - MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::ReadWrite), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), - (LogicType::Flush, MemoryAccess::Write), (LogicType::SoundAlert, - MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, - MemoryAccess::Read), (LogicType::RatioLiquidOxygen, - MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, - MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - 1579842814i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHastelloyIngot".into(), - prefab_hash: 1579842814i32, - desc: "".into(), - name: "Ingot (Hastelloy)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some( - vec![("Hastelloy".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 299189339i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHat".into(), - prefab_hash: 299189339i32, - desc: "As the name suggests, this is a hat.".into(), - name: "Hat".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Helmet, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 998653377i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHighVolumeGasCanisterEmpty".into(), - prefab_hash: 998653377i32, - desc: "".into(), - name: "High Volume Gas Canister".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::GasCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 83f32 }), - } - .into(), - ), - ( - -1117581553i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHorticultureBelt".into(), - prefab_hash: -1117581553i32, - desc: "".into(), - name: "Horticulture Belt".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Belt, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name - : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Plant" - .into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ - : Class::Plant }, SlotInfo { name : "Plant".into(), typ : - Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant - }, SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { - name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : - "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" - .into(), typ : Class::Plant } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1193543727i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemHydroponicTray".into(), - prefab_hash: -1193543727i32, - desc: "This kits creates a Hydroponics Tray for growing various plants." - .into(), - name: "Kit (Hydroponic Tray)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1217489948i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemIce".into(), - prefab_hash: 1217489948i32, - desc: "Water ice can be found on most planets in the Solar System, though not all worlds visited by Stationeers possess this resource. Highly sensitive to temperature, ice will begin to melt as soon as it is mined, unless kept in the Mining Belt. When melting, ice produces a mixture of Steam and Nitrogen gas." - .into(), - name: "Ice (Water)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 890106742i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemIgniter".into(), - prefab_hash: 890106742i32, - desc: "This kit creates an Kit (Igniter) unit." - .into(), - name: "Kit (Igniter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -787796599i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemInconelIngot".into(), - prefab_hash: -787796599i32, - desc: "".into(), - name: "Ingot (Inconel)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Inconel".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 897176943i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemInsulation".into(), - prefab_hash: 897176943i32, - desc: "Mysterious in the extreme, the function of this item is lost to the ages." - .into(), - name: "Insulation".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -744098481i32, - ItemLogicMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "ItemIntegratedCircuit10".into(), - prefab_hash: -744098481i32, - desc: "".into(), - name: "Integrated Circuit (IC10)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::ProgrammableChip, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::LineNumber, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - memory: MemoryInfo { - instructions: None, - memory_access: MemoryAccess::ReadWrite, - memory_size: 512u32, - }, - } - .into(), - ), - ( - -297990285i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemInvarIngot".into(), - prefab_hash: -297990285i32, - desc: "".into(), - name: "Ingot (Invar)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Invar".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1225836666i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemIronFrames".into(), - prefab_hash: 1225836666i32, - desc: "".into(), - name: "Iron Frames".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 30u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1301215609i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemIronIngot".into(), - prefab_hash: -1301215609i32, - desc: "The most basic unit of construction available to Stationeer-kind, iron ingots are created by smelting Ore (Iron) in the Furnace and Arc Furnace, and used to create a variety of items." - .into(), - name: "Ingot (Iron)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Iron".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1758427767i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemIronOre".into(), - prefab_hash: 1758427767i32, - desc: "Abundant throughout the Solar System, iron is the ore most commonly used by Stationeers constructing offworld bases. It can be smelted into both Ingot (Iron)s and Ingot (Steel)s." - .into(), - name: "Ore (Iron)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Iron".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -487378546i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemIronSheets".into(), - prefab_hash: -487378546i32, - desc: "".into(), - name: "Iron Sheets".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1969189000i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemJetpackBasic".into(), - prefab_hash: 1969189000i32, - desc: "The basic CHAC jetpack isn\'t \'technically\' a jetpack, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stabilizer causes the spacepack to hover when a given height is reached.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move." - .into(), - name: "Jetpack Basic".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Back, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Propellant".into(), typ : Class::GasCanister }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 496830914i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAIMeE".into(), - prefab_hash: 496830914i32, - desc: "".into(), - name: "Kit (AIMeE)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 513258369i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAccessBridge".into(), - prefab_hash: 513258369i32, - desc: "".into(), - name: "Kit (Access Bridge)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1431998347i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAdvancedComposter".into(), - prefab_hash: -1431998347i32, - desc: "".into(), - name: "Kit (Advanced Composter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -616758353i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAdvancedFurnace".into(), - prefab_hash: -616758353i32, - desc: "".into(), - name: "Kit (Advanced Furnace)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -598545233i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAdvancedPackagingMachine".into(), - prefab_hash: -598545233i32, - desc: "".into(), - name: "Kit (Advanced Packaging Machine)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 964043875i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAirlock".into(), - prefab_hash: 964043875i32, - desc: "".into(), - name: "Kit (Airlock)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 682546947i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAirlockGate".into(), - prefab_hash: 682546947i32, - desc: "".into(), - name: "Kit (Hangar Door)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -98995857i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitArcFurnace".into(), - prefab_hash: -98995857i32, - desc: "".into(), - name: "Kit (Arc Furnace)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1222286371i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAtmospherics".into(), - prefab_hash: 1222286371i32, - desc: "".into(), - name: "Kit (Atmospherics)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1668815415i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAutoMinerSmall".into(), - prefab_hash: 1668815415i32, - desc: "".into(), - name: "Kit (Autominer Small)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1753893214i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAutolathe".into(), - prefab_hash: -1753893214i32, - desc: "".into(), - name: "Kit (Autolathe)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1931958659i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitAutomatedOven".into(), - prefab_hash: -1931958659i32, - desc: "".into(), - name: "Kit (Automated Oven)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 148305004i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitBasket".into(), - prefab_hash: 148305004i32, - desc: "".into(), - name: "Kit (Basket)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1406656973i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitBattery".into(), - prefab_hash: 1406656973i32, - desc: "".into(), - name: "Kit (Battery)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -21225041i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitBatteryLarge".into(), - prefab_hash: -21225041i32, - desc: "".into(), - name: "Kit (Battery Large)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 249073136i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitBeacon".into(), - prefab_hash: 249073136i32, - desc: "".into(), - name: "Kit (Beacon)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1241256797i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitBeds".into(), - prefab_hash: -1241256797i32, - desc: "".into(), - name: "Kit (Beds)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1755116240i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitBlastDoor".into(), - prefab_hash: -1755116240i32, - desc: "".into(), - name: "Kit (Blast Door)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 578182956i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitCentrifuge".into(), - prefab_hash: 578182956i32, - desc: "".into(), - name: "Kit (Centrifuge)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1394008073i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitChairs".into(), - prefab_hash: -1394008073i32, - desc: "".into(), - name: "Kit (Chairs)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1025254665i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitChute".into(), - prefab_hash: 1025254665i32, - desc: "".into(), - name: "Kit (Basic Chutes)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -876560854i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitChuteUmbilical".into(), - prefab_hash: -876560854i32, - desc: "".into(), - name: "Kit (Chute Umbilical)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1470820996i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitCompositeCladding".into(), - prefab_hash: -1470820996i32, - desc: "".into(), - name: "Kit (Cladding)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1182412869i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitCompositeFloorGrating".into(), - prefab_hash: 1182412869i32, - desc: "".into(), - name: "Kit (Floor Grating)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1990225489i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitComputer".into(), - prefab_hash: 1990225489i32, - desc: "".into(), - name: "Kit (Computer)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1241851179i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitConsole".into(), - prefab_hash: -1241851179i32, - desc: "".into(), - name: "Kit (Consoles)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 429365598i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitCrate".into(), - prefab_hash: 429365598i32, - desc: "".into(), - name: "Kit (Crate)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1585956426i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitCrateMkII".into(), - prefab_hash: -1585956426i32, - desc: "".into(), - name: "Kit (Crate Mk II)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -551612946i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitCrateMount".into(), - prefab_hash: -551612946i32, - desc: "".into(), - name: "Kit (Container Mount)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -545234195i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitCryoTube".into(), - prefab_hash: -545234195i32, - desc: "".into(), - name: "Kit (Cryo Tube)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1935075707i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDeepMiner".into(), - prefab_hash: -1935075707i32, - desc: "".into(), - name: "Kit (Deep Miner)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 77421200i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDockingPort".into(), - prefab_hash: 77421200i32, - desc: "".into(), - name: "Kit (Docking Port)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 168615924i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDoor".into(), - prefab_hash: 168615924i32, - desc: "".into(), - name: "Kit (Door)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1743663875i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDrinkingFountain".into(), - prefab_hash: -1743663875i32, - desc: "".into(), - name: "Kit (Drinking Fountain)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1061945368i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDynamicCanister".into(), - prefab_hash: -1061945368i32, - desc: "".into(), - name: "Kit (Portable Gas Tank)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1533501495i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDynamicGasTankAdvanced".into(), - prefab_hash: 1533501495i32, - desc: "".into(), - name: "Kit (Portable Gas Tank Mk II)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -732720413i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDynamicGenerator".into(), - prefab_hash: -732720413i32, - desc: "".into(), - name: "Kit (Portable Generator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1861154222i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDynamicHydroponics".into(), - prefab_hash: -1861154222i32, - desc: "".into(), - name: "Kit (Portable Hydroponics)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 375541286i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDynamicLiquidCanister".into(), - prefab_hash: 375541286i32, - desc: "".into(), - name: "Kit (Portable Liquid Tank)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -638019974i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitDynamicMKIILiquidCanister".into(), - prefab_hash: -638019974i32, - desc: "".into(), - name: "Kit (Portable Liquid Tank Mk II)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1603046970i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitElectricUmbilical".into(), - prefab_hash: 1603046970i32, - desc: "".into(), - name: "Kit (Power Umbilical)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1181922382i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitElectronicsPrinter".into(), - prefab_hash: -1181922382i32, - desc: "".into(), - name: "Kit (Electronics Printer)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -945806652i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitElevator".into(), - prefab_hash: -945806652i32, - desc: "".into(), - name: "Kit (Elevator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 755302726i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitEngineLarge".into(), - prefab_hash: 755302726i32, - desc: "".into(), - name: "Kit (Engine Large)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1969312177i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitEngineMedium".into(), - prefab_hash: 1969312177i32, - desc: "".into(), - name: "Kit (Engine Medium)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 19645163i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitEngineSmall".into(), - prefab_hash: 19645163i32, - desc: "".into(), - name: "Kit (Engine Small)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1587787610i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitEvaporationChamber".into(), - prefab_hash: 1587787610i32, - desc: "".into(), - name: "Kit (Phase Change Device)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1701764190i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitFlagODA".into(), - prefab_hash: 1701764190i32, - desc: "".into(), - name: "Kit (ODA Flag)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1168199498i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitFridgeBig".into(), - prefab_hash: -1168199498i32, - desc: "".into(), - name: "Kit (Fridge Large)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1661226524i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitFridgeSmall".into(), - prefab_hash: 1661226524i32, - desc: "".into(), - name: "Kit (Fridge Small)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -806743925i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitFurnace".into(), - prefab_hash: -806743925i32, - desc: "".into(), - name: "Kit (Furnace)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1162905029i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitFurniture".into(), - prefab_hash: 1162905029i32, - desc: "".into(), - name: "Kit (Furniture)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -366262681i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitFuselage".into(), - prefab_hash: -366262681i32, - desc: "".into(), - name: "Kit (Fuselage)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 377745425i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitGasGenerator".into(), - prefab_hash: 377745425i32, - desc: "".into(), - name: "Kit (Gas Fuel Generator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1867280568i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitGasUmbilical".into(), - prefab_hash: -1867280568i32, - desc: "".into(), - name: "Kit (Gas Umbilical)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 206848766i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitGovernedGasRocketEngine".into(), - prefab_hash: 206848766i32, - desc: "".into(), - name: "Kit (Pumped Gas Rocket Engine)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2140672772i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitGroundTelescope".into(), - prefab_hash: -2140672772i32, - desc: "".into(), - name: "Kit (Telescope)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 341030083i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitGrowLight".into(), - prefab_hash: 341030083i32, - desc: "".into(), - name: "Kit (Grow Light)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1022693454i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitHarvie".into(), - prefab_hash: -1022693454i32, - desc: "".into(), - name: "Kit (Harvie)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1710540039i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitHeatExchanger".into(), - prefab_hash: -1710540039i32, - desc: "".into(), - name: "Kit Heat Exchanger".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 844391171i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitHorizontalAutoMiner".into(), - prefab_hash: 844391171i32, - desc: "".into(), - name: "Kit (OGRE)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2098556089i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitHydraulicPipeBender".into(), - prefab_hash: -2098556089i32, - desc: "".into(), - name: "Kit (Hydraulic Pipe Bender)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -927931558i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitHydroponicAutomated".into(), - prefab_hash: -927931558i32, - desc: "".into(), - name: "Kit (Automated Hydroponics)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2057179799i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitHydroponicStation".into(), - prefab_hash: 2057179799i32, - desc: "".into(), - name: "Kit (Hydroponic Station)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 288111533i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitIceCrusher".into(), - prefab_hash: 288111533i32, - desc: "".into(), - name: "Kit (Ice Crusher)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2067655311i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitInsulatedLiquidPipe".into(), - prefab_hash: 2067655311i32, - desc: "".into(), - name: "Kit (Insulated Liquid Pipe)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 20u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 452636699i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitInsulatedPipe".into(), - prefab_hash: 452636699i32, - desc: "".into(), - name: "Kit (Insulated Pipe)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 20u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -27284803i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitInsulatedPipeUtility".into(), - prefab_hash: -27284803i32, - desc: "".into(), - name: "Kit (Insulated Pipe Utility Gas)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1831558953i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitInsulatedPipeUtilityLiquid".into(), - prefab_hash: -1831558953i32, - desc: "".into(), - name: "Kit (Insulated Pipe Utility Liquid)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1935945891i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitInteriorDoors".into(), - prefab_hash: 1935945891i32, - desc: "".into(), - name: "Kit (Interior Doors)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 489494578i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLadder".into(), - prefab_hash: 489494578i32, - desc: "".into(), - name: "Kit (Ladder)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1817007843i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLandingPadAtmos".into(), - prefab_hash: 1817007843i32, - desc: "".into(), - name: "Kit (Landing Pad Atmospherics)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 293581318i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLandingPadBasic".into(), - prefab_hash: 293581318i32, - desc: "".into(), - name: "Kit (Landing Pad Basic)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1267511065i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLandingPadWaypoint".into(), - prefab_hash: -1267511065i32, - desc: "".into(), - name: "Kit (Landing Pad Runway)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 450164077i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLargeDirectHeatExchanger".into(), - prefab_hash: 450164077i32, - desc: "".into(), - name: "Kit (Large Direct Heat Exchanger)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 847430620i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLargeExtendableRadiator".into(), - prefab_hash: 847430620i32, - desc: "".into(), - name: "Kit (Large Extendable Radiator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2039971217i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLargeSatelliteDish".into(), - prefab_hash: -2039971217i32, - desc: "".into(), - name: "Kit (Large Satellite Dish)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1854167549i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLaunchMount".into(), - prefab_hash: -1854167549i32, - desc: "".into(), - name: "Kit (Launch Mount)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -174523552i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLaunchTower".into(), - prefab_hash: -174523552i32, - desc: "".into(), - name: "Kit (Rocket Launch Tower)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1951126161i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLiquidRegulator".into(), - prefab_hash: 1951126161i32, - desc: "".into(), - name: "Kit (Liquid Regulator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -799849305i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLiquidTank".into(), - prefab_hash: -799849305i32, - desc: "".into(), - name: "Kit (Liquid Tank)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 617773453i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLiquidTankInsulated".into(), - prefab_hash: 617773453i32, - desc: "".into(), - name: "Kit (Insulated Liquid Tank)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1805020897i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLiquidTurboVolumePump".into(), - prefab_hash: -1805020897i32, - desc: "".into(), - name: "Kit (Turbo Volume Pump - Liquid)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1571996765i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLiquidUmbilical".into(), - prefab_hash: 1571996765i32, - desc: "".into(), - name: "Kit (Liquid Umbilical)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 882301399i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLocker".into(), - prefab_hash: 882301399i32, - desc: "".into(), - name: "Kit (Locker)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1512322581i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLogicCircuit".into(), - prefab_hash: 1512322581i32, - desc: "".into(), - name: "Kit (IC Housing)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1997293610i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLogicInputOutput".into(), - prefab_hash: 1997293610i32, - desc: "".into(), - name: "Kit (Logic I/O)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2098214189i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLogicMemory".into(), - prefab_hash: -2098214189i32, - desc: "".into(), - name: "Kit (Logic Memory)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 220644373i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLogicProcessor".into(), - prefab_hash: 220644373i32, - desc: "".into(), - name: "Kit (Logic Processor)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 124499454i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLogicSwitch".into(), - prefab_hash: 124499454i32, - desc: "".into(), - name: "Kit (Logic Switch)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1005397063i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitLogicTransmitter".into(), - prefab_hash: 1005397063i32, - desc: "".into(), - name: "Kit (Logic Transmitter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -344968335i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitMotherShipCore".into(), - prefab_hash: -344968335i32, - desc: "".into(), - name: "Kit (Mothership)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2038889137i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitMusicMachines".into(), - prefab_hash: -2038889137i32, - desc: "".into(), - name: "Kit (Music Machines)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1752768283i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPassiveLargeRadiatorGas".into(), - prefab_hash: -1752768283i32, - desc: "".into(), - name: "Kit (Medium Radiator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1453961898i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPassiveLargeRadiatorLiquid".into(), - prefab_hash: 1453961898i32, - desc: "".into(), - name: "Kit (Medium Radiator Liquid)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 636112787i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPassthroughHeatExchanger".into(), - prefab_hash: 636112787i32, - desc: "".into(), - name: "Kit (CounterFlow Heat Exchanger)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2062364768i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPictureFrame".into(), - prefab_hash: -2062364768i32, - desc: "".into(), - name: "Kit Picture Frame".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1619793705i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPipe".into(), - prefab_hash: -1619793705i32, - desc: "".into(), - name: "Kit (Pipe)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 20u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1166461357i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPipeLiquid".into(), - prefab_hash: -1166461357i32, - desc: "".into(), - name: "Kit (Liquid Pipe)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 20u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -827125300i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPipeOrgan".into(), - prefab_hash: -827125300i32, - desc: "".into(), - name: "Kit (Pipe Organ)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 920411066i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPipeRadiator".into(), - prefab_hash: 920411066i32, - desc: "".into(), - name: "Kit (Pipe Radiator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1697302609i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPipeRadiatorLiquid".into(), - prefab_hash: -1697302609i32, - desc: "".into(), - name: "Kit (Pipe Radiator Liquid)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1934508338i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPipeUtility".into(), - prefab_hash: 1934508338i32, - desc: "".into(), - name: "Kit (Pipe Utility Gas)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 595478589i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPipeUtilityLiquid".into(), - prefab_hash: 595478589i32, - desc: "".into(), - name: "Kit (Pipe Utility Liquid)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 119096484i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPlanter".into(), - prefab_hash: 119096484i32, - desc: "".into(), - name: "Kit (Planter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1041148999i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPortablesConnector".into(), - prefab_hash: 1041148999i32, - desc: "".into(), - name: "Kit (Portables Connector)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 291368213i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPowerTransmitter".into(), - prefab_hash: 291368213i32, - desc: "".into(), - name: "Kit (Power Transmitter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -831211676i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPowerTransmitterOmni".into(), - prefab_hash: -831211676i32, - desc: "".into(), - name: "Kit (Power Transmitter Omni)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2015439334i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPoweredVent".into(), - prefab_hash: 2015439334i32, - desc: "".into(), - name: "Kit (Powered Vent)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -121514007i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPressureFedGasEngine".into(), - prefab_hash: -121514007i32, - desc: "".into(), - name: "Kit (Pressure Fed Gas Engine)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -99091572i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPressureFedLiquidEngine".into(), - prefab_hash: -99091572i32, - desc: "".into(), - name: "Kit (Pressure Fed Liquid Engine)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 123504691i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPressurePlate".into(), - prefab_hash: 123504691i32, - desc: "".into(), - name: "Kit (Trigger Plate)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1921918951i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitPumpedLiquidEngine".into(), - prefab_hash: 1921918951i32, - desc: "".into(), - name: "Kit (Pumped Liquid Engine)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 750176282i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRailing".into(), - prefab_hash: 750176282i32, - desc: "".into(), - name: "Kit (Railing)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 849148192i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRecycler".into(), - prefab_hash: 849148192i32, - desc: "".into(), - name: "Kit (Recycler)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1181371795i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRegulator".into(), - prefab_hash: 1181371795i32, - desc: "".into(), - name: "Kit (Pressure Regulator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1459985302i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitReinforcedWindows".into(), - prefab_hash: 1459985302i32, - desc: "".into(), - name: "Kit (Reinforced Windows)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 724776762i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitResearchMachine".into(), - prefab_hash: 724776762i32, - desc: "".into(), - name: "Kit Research Machine".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1574688481i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRespawnPointWallMounted".into(), - prefab_hash: 1574688481i32, - desc: "".into(), - name: "Kit (Respawn)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1396305045i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketAvionics".into(), - prefab_hash: 1396305045i32, - desc: "".into(), - name: "Kit (Avionics)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -314072139i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketBattery".into(), - prefab_hash: -314072139i32, - desc: "".into(), - name: "Kit (Rocket Battery)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 479850239i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketCargoStorage".into(), - prefab_hash: 479850239i32, - desc: "".into(), - name: "Kit (Rocket Cargo Storage)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -303008602i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketCelestialTracker".into(), - prefab_hash: -303008602i32, - desc: "".into(), - name: "Kit (Rocket Celestial Tracker)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 721251202i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketCircuitHousing".into(), - prefab_hash: 721251202i32, - desc: "".into(), - name: "Kit (Rocket Circuit Housing)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1256996603i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketDatalink".into(), - prefab_hash: -1256996603i32, - desc: "".into(), - name: "Kit (Rocket Datalink)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1629347579i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketGasFuelTank".into(), - prefab_hash: -1629347579i32, - desc: "".into(), - name: "Kit (Rocket Gas Fuel Tank)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2032027950i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketLiquidFuelTank".into(), - prefab_hash: 2032027950i32, - desc: "".into(), - name: "Kit (Rocket Liquid Fuel Tank)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -636127860i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketManufactory".into(), - prefab_hash: -636127860i32, - desc: "".into(), - name: "Kit (Rocket Manufactory)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -867969909i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketMiner".into(), - prefab_hash: -867969909i32, - desc: "".into(), - name: "Kit (Rocket Miner)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1753647154i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketScanner".into(), - prefab_hash: 1753647154i32, - desc: "".into(), - name: "Kit (Rocket Scanner)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -932335800i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRocketTransformerSmall".into(), - prefab_hash: -932335800i32, - desc: "".into(), - name: "Kit (Transformer Small (Rocket))".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1827215803i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRoverFrame".into(), - prefab_hash: 1827215803i32, - desc: "".into(), - name: "Kit (Rover Frame)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 197243872i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitRoverMKI".into(), - prefab_hash: 197243872i32, - desc: "".into(), - name: "Kit (Rover Mk I)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 323957548i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSDBHopper".into(), - prefab_hash: 323957548i32, - desc: "".into(), - name: "Kit (SDB Hopper)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 178422810i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSatelliteDish".into(), - prefab_hash: 178422810i32, - desc: "".into(), - name: "Kit (Medium Satellite Dish)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 578078533i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSecurityPrinter".into(), - prefab_hash: 578078533i32, - desc: "".into(), - name: "Kit (Security Printer)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1776897113i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSensor".into(), - prefab_hash: -1776897113i32, - desc: "".into(), - name: "Kit (Sensors)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 735858725i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitShower".into(), - prefab_hash: 735858725i32, - desc: "".into(), - name: "Kit (Shower)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 529996327i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSign".into(), - prefab_hash: 529996327i32, - desc: "".into(), - name: "Kit (Sign)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 326752036i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSleeper".into(), - prefab_hash: 326752036i32, - desc: "".into(), - name: "Kit (Sleeper)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1332682164i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSmallDirectHeatExchanger".into(), - prefab_hash: -1332682164i32, - desc: "".into(), - name: "Kit (Small Direct Heat Exchanger)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1960952220i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSmallSatelliteDish".into(), - prefab_hash: 1960952220i32, - desc: "".into(), - name: "Kit (Small Satellite Dish)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1924492105i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSolarPanel".into(), - prefab_hash: -1924492105i32, - desc: "".into(), - name: "Kit (Solar Panel)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 844961456i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSolarPanelBasic".into(), - prefab_hash: 844961456i32, - desc: "".into(), - name: "Kit (Solar Panel Basic)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -528695432i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSolarPanelBasicReinforced".into(), - prefab_hash: -528695432i32, - desc: "".into(), - name: "Kit (Solar Panel Basic Heavy)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -364868685i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSolarPanelReinforced".into(), - prefab_hash: -364868685i32, - desc: "".into(), - name: "Kit (Solar Panel Heavy)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1293995736i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSolidGenerator".into(), - prefab_hash: 1293995736i32, - desc: "".into(), - name: "Kit (Solid Generator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 969522478i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSorter".into(), - prefab_hash: 969522478i32, - desc: "".into(), - name: "Kit (Sorter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -126038526i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSpeaker".into(), - prefab_hash: -126038526i32, - desc: "".into(), - name: "Kit (Speaker)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1013244511i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitStacker".into(), - prefab_hash: 1013244511i32, - desc: "".into(), - name: "Kit (Stacker)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 170878959i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitStairs".into(), - prefab_hash: 170878959i32, - desc: "".into(), - name: "Kit (Stairs)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1868555784i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitStairwell".into(), - prefab_hash: -1868555784i32, - desc: "".into(), - name: "Kit (Stairwell)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2133035682i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitStandardChute".into(), - prefab_hash: 2133035682i32, - desc: "".into(), - name: "Kit (Powered Chutes)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1821571150i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitStirlingEngine".into(), - prefab_hash: -1821571150i32, - desc: "".into(), - name: "Kit (Stirling Engine)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1088892825i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitSuitStorage".into(), - prefab_hash: 1088892825i32, - desc: "".into(), - name: "Kit (Suit Storage)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1361598922i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitTables".into(), - prefab_hash: -1361598922i32, - desc: "".into(), - name: "Kit (Tables)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 771439840i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitTank".into(), - prefab_hash: 771439840i32, - desc: "".into(), - name: "Kit (Tank)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1021053608i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitTankInsulated".into(), - prefab_hash: 1021053608i32, - desc: "".into(), - name: "Kit (Tank Insulated)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 529137748i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitToolManufactory".into(), - prefab_hash: 529137748i32, - desc: "".into(), - name: "Kit (Tool Manufactory)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -453039435i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitTransformer".into(), - prefab_hash: -453039435i32, - desc: "".into(), - name: "Kit (Transformer Large)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 665194284i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitTransformerSmall".into(), - prefab_hash: 665194284i32, - desc: "".into(), - name: "Kit (Transformer Small)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1590715731i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitTurbineGenerator".into(), - prefab_hash: -1590715731i32, - desc: "".into(), - name: "Kit (Turbine Generator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1248429712i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitTurboVolumePump".into(), - prefab_hash: -1248429712i32, - desc: "".into(), - name: "Kit (Turbo Volume Pump - Gas)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1798044015i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitUprightWindTurbine".into(), - prefab_hash: -1798044015i32, - desc: "".into(), - name: "Kit (Upright Wind Turbine)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2038384332i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitVendingMachine".into(), - prefab_hash: -2038384332i32, - desc: "".into(), - name: "Kit (Vending Machine)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1867508561i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitVendingMachineRefrigerated".into(), - prefab_hash: -1867508561i32, - desc: "".into(), - name: "Kit (Vending Machine Refrigerated)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1826855889i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWall".into(), - prefab_hash: -1826855889i32, - desc: "".into(), - name: "Kit (Wall)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 30u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1625214531i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWallArch".into(), - prefab_hash: 1625214531i32, - desc: "".into(), - name: "Kit (Arched Wall)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 30u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -846838195i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWallFlat".into(), - prefab_hash: -846838195i32, - desc: "".into(), - name: "Kit (Flat Wall)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 30u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -784733231i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWallGeometry".into(), - prefab_hash: -784733231i32, - desc: "".into(), - name: "Kit (Geometric Wall)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 30u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -524546923i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWallIron".into(), - prefab_hash: -524546923i32, - desc: "".into(), - name: "Kit (Iron Wall)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 30u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -821868990i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWallPadded".into(), - prefab_hash: -821868990i32, - desc: "".into(), - name: "Kit (Padded Wall)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 30u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 159886536i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWaterBottleFiller".into(), - prefab_hash: 159886536i32, - desc: "".into(), - name: "Kit (Water Bottle Filler)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 611181283i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWaterPurifier".into(), - prefab_hash: 611181283i32, - desc: "".into(), - name: "Kit (Water Purifier)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 337505889i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWeatherStation".into(), - prefab_hash: 337505889i32, - desc: "".into(), - name: "Kit (Weather Station)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -868916503i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWindTurbine".into(), - prefab_hash: -868916503i32, - desc: "".into(), - name: "Kit (Wind Turbine)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1779979754i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemKitWindowShutter".into(), - prefab_hash: 1779979754i32, - desc: "".into(), - name: "Kit (Window Shutter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -743968726i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLabeller".into(), - prefab_hash: -743968726i32, - desc: "A labeller lets you set names and values on a variety of devices and structures, including Console and Logic." - .into(), - name: "Labeller".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 141535121i32, - ItemCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLaptop".into(), - prefab_hash: 141535121i32, - desc: "The Laptop functions as a portable IC editor. To operate the Laptop it must be powered with a battery, have a IC Editor Motherboard in the motherboard slot, and an Integrated Circuit (IC10) in the Programmable Chip Slot.\n\nYou must place the laptop down to interact with the onsreen UI.\n \nConnects to Logic Transmitter" - .into(), - name: "Laptop".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::PressureExternal, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::TemperatureExternal, MemoryAccess::Read), - (LogicType::PositionX, MemoryAccess::Read), - (LogicType::PositionY, MemoryAccess::Read), - (LogicType::PositionZ, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: true, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Programmable Chip".into(), typ : - Class::ProgrammableChip }, SlotInfo { name : "Battery".into(), typ : - Class::Battery }, SlotInfo { name : "Motherboard".into(), typ : - Class::Motherboard } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 2134647745i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLeadIngot".into(), - prefab_hash: 2134647745i32, - desc: "".into(), - name: "Ingot (Lead)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Lead".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -190236170i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLeadOre".into(), - prefab_hash: -190236170i32, - desc: "Lead is a chemical element with the symbol \"Pb\". It is a dense, heavy metal with a low melting point. Lead is a used to make a variety of things such as alloys like Ingot (Solder) and munitions." - .into(), - name: "Ore (Lead)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Lead".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1949076595i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLightSword".into(), - prefab_hash: 1949076595i32, - desc: "A charming, if useless, pseudo-weapon. (Creative only.)" - .into(), - name: "Light Sword".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -185207387i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLiquidCanisterEmpty".into(), - prefab_hash: -185207387i32, - desc: "".into(), - name: "Liquid Canister".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::LiquidCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.05f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { - volume: 12.1f32, - }), - } - .into(), - ), - ( - 777684475i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLiquidCanisterSmart".into(), - prefab_hash: 777684475i32, - desc: "0.Mode0\n1.Mode1".into(), - name: "Liquid Canister (Smart)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::LiquidCanister, - sorting_class: SortingClass::Atmospherics, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { - volume: 18.1f32, - }), - } - .into(), - ), - ( - 2036225202i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLiquidDrain".into(), - prefab_hash: 2036225202i32, - desc: "".into(), - name: "Kit (Liquid Drain)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 226055671i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLiquidPipeAnalyzer".into(), - prefab_hash: 226055671i32, - desc: "".into(), - name: "Kit (Liquid Pipe Analyzer)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -248475032i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLiquidPipeHeater".into(), - prefab_hash: -248475032i32, - desc: "Creates a Pipe Heater (Liquid)." - .into(), - name: "Pipe Heater Kit (Liquid)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2126113312i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLiquidPipeValve".into(), - prefab_hash: -2126113312i32, - desc: "This kit creates a Liquid Valve." - .into(), - name: "Kit (Liquid Pipe Valve)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2106280569i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLiquidPipeVolumePump".into(), - prefab_hash: -2106280569i32, - desc: "".into(), - name: "Kit (Liquid Volume Pump)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2037427578i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemLiquidTankStorage".into(), - prefab_hash: 2037427578i32, - desc: "This kit produces a Kit (Liquid Canister Storage) for refilling a Liquid Canister." - .into(), - name: "Kit (Liquid Canister Storage)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 240174650i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMKIIAngleGrinder".into(), - prefab_hash: 240174650i32, - desc: "Angles-be-gone with the trusty angle grinder. The MK II is more resistant to temperature and pressure." - .into(), - name: "Mk II Angle Grinder".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -2061979347i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMKIIArcWelder".into(), - prefab_hash: -2061979347i32, - desc: "".into(), - name: "Mk II Arc Welder".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1440775434i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMKIICrowbar".into(), - prefab_hash: 1440775434i32, - desc: "Recurso\'s entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise. The MK II is more resistant to temperature and pressure." - .into(), - name: "Mk II Crowbar".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 324791548i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMKIIDrill".into(), - prefab_hash: 324791548i32, - desc: "The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature." - .into(), - name: "Mk II Drill".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 388774906i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMKIIDuctTape".into(), - prefab_hash: 388774906i32, - desc: "In the distant past, one of Earth\'s great champions taught a generation of \'Fix-It People\' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage." - .into(), - name: "Mk II Duct Tape".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1875271296i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMKIIMiningDrill".into(), - prefab_hash: -1875271296i32, - desc: "The handheld \'Topo\' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, \'The Topo don\'t stopo.\' The MK II is more resistant to temperature and pressure." - .into(), - name: "Mk II Mining Drill".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Default".into()), (1u32, "Flatten".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -2015613246i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMKIIScrewdriver".into(), - prefab_hash: -2015613246i32, - desc: "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It\'s definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units. The MK II is more resistant to temperature and pressure." - .into(), - name: "Mk II Screwdriver".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -178893251i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMKIIWireCutters".into(), - prefab_hash: -178893251i32, - desc: "Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools." - .into(), - name: "Mk II Wire Cutters".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1862001680i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMKIIWrench".into(), - prefab_hash: 1862001680i32, - desc: "One of humanity\'s enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures The MK II is more resistant to temperature and pressure." - .into(), - name: "Mk II Wrench".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1399098998i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMarineBodyArmor".into(), - prefab_hash: 1399098998i32, - desc: "".into(), - name: "Marine Armor".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Suit, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1073631646i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMarineHelmet".into(), - prefab_hash: 1073631646i32, - desc: "".into(), - name: "Marine Helmet".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Helmet, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1327248310i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMilk".into(), - prefab_hash: 1327248310i32, - desc: "Full disclosure, it\'s not actually \'milk\', but an Agrizero-invented synthesis of 5ml Soy Oil and 5g Fern, delicately blended in the Chemistry Station. Surprisingly filling, it can be used as an ingredient to cook other food in the Microwave or Automated Oven. Think, Muffin." - .into(), - name: "Milk".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some(vec![("Milk".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1650383245i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMiningBackPack".into(), - prefab_hash: -1650383245i32, - desc: "".into(), - name: "Mining Backpack".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Back, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -676435305i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMiningBelt".into(), - prefab_hash: -676435305i32, - desc: "Originally developed by Recurso Espaciais for asteroid mining, the Stationeer\'s mining belt has room for two tools and eight ore stacks. While wearing the belt, ore is automatically stored there when mined. Volatile and temperature-dependent remain stable in the environmentally controlled unit." - .into(), - name: "Mining Belt".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Belt, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name - : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Ore".into(), - typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore - }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { - name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore" - .into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : - Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1470787934i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMiningBeltMKII".into(), - prefab_hash: 1470787934i32, - desc: "A larger and more capacious mining belt, the Mk II is similar to the Mining Belt, but has 13 slots instead of the basic 8, to increase the length of your mining trips. It also has space for two tools. " - .into(), - name: "Mining Belt MK II".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Belt, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name - : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Ore".into(), - typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore - }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { - name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore" - .into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : - Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 15829510i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMiningCharge".into(), - prefab_hash: 15829510i32, - desc: "A low cost, high yield explosive with a 10 second timer." - .into(), - name: "Mining Charge".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1055173191i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMiningDrill".into(), - prefab_hash: 1055173191i32, - desc: "The handheld \'Topo\' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, \'The Topo don\'t stopo.\'" - .into(), - name: "Mining Drill".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Default".into()), (1u32, "Flatten".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1663349918i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMiningDrillHeavy".into(), - prefab_hash: -1663349918i32, - desc: "Sometimes mining trips require something a little bigger to bring home the goods. This scaled up version of the Recurso \'Topo\' design Mining Drill can literally move mountains. The heavy mining drill will remove more ground and mine ore more quickly than the standard mining drill. The heavy mining drill is also resilient to temperature and pressure. So no matter what planet or extreme weather conditions may be present, the Recurso heavy mining drill will get the job done." - .into(), - name: "Mining Drill (Heavy)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Default".into()), (1u32, "Flatten".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1258187304i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMiningDrillPneumatic".into(), - prefab_hash: 1258187304i32, - desc: "0.Default\n1.Flatten".into(), - name: "Pneumatic Mining Drill".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1467558064i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMkIIToolbelt".into(), - prefab_hash: 1467558064i32, - desc: "A large, ten-slot tool belt with two extra generic slots for carrying whatever takes your fancy." - .into(), - name: "Tool Belt MK II".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Belt, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name - : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" - .into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ : - Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, - SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name - : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" - .into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ : - Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1864982322i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMuffin".into(), - prefab_hash: -1864982322i32, - desc: "A delicious, semi-healthful snack, nothing comforts a Stationeer 800 million kilometers from home like a hand-made muffin." - .into(), - name: "Muffin".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2044798572i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemMushroom".into(), - prefab_hash: 2044798572i32, - desc: "A tasty food item. Unlike normal plants, it consumes Oxygen and outputs Carbon Dioxide. Mushrooms will only mature at a moderate rate in darkness, and prolonged light will kill it." - .into(), - name: "Mushroom".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 20u32, - reagents: Some( - vec![("Mushroom".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 982514123i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemNVG".into(), - prefab_hash: 982514123i32, - desc: "".into(), - name: "Night Vision Goggles".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Glasses, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1406385572i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemNickelIngot".into(), - prefab_hash: -1406385572i32, - desc: "".into(), - name: "Ingot (Nickel)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Nickel".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1830218956i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemNickelOre".into(), - prefab_hash: 1830218956i32, - desc: "Nickel is a chemical element with the symbol \"Ni\" and is a rare metal commonly used as a plating to prevent corrosion. Sought after by many Stationeers, Nickel is also commonly used to create several alloys." - .into(), - name: "Ore (Nickel)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Nickel".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1499471529i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemNitrice".into(), - prefab_hash: -1499471529i32, - desc: "Nitrice is the nickname given to solid Nitrogen Ice, and found on many planets and moons in the Solar System. Given the inert nature of the Nitrogen it produces, the ice is useful when making breathable atmospheres with low flammability.\n\nHighly sensitive to temperature, nitrice will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small." - .into(), - name: "Ice (Nitrice)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1805394113i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemOxite".into(), - prefab_hash: -1805394113i32, - desc: "Oxite ice is largely composed of frozen Oxygen, and found on many planets in the Solar System. Highly valuable and sought after, not all planets a Stationeer visits will have some. \n\nHighly sensitive to temperature, oxite will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small. When melting, oxite produces a mixture of Oxygen and Nitrogen." - .into(), - name: "Ice (Oxite)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 238631271i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPassiveVent".into(), - prefab_hash: 238631271i32, - desc: "This kit creates a Passive Vent among other variants." - .into(), - name: "Passive Vent".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1397583760i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPassiveVentInsulated".into(), - prefab_hash: -1397583760i32, - desc: "".into(), - name: "Kit (Insulated Passive Vent)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2042955224i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPeaceLily".into(), - prefab_hash: 2042955224i32, - desc: "A fetching lily with greater resistance to cold temperatures." - .into(), - name: "Peace Lily".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -913649823i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPickaxe".into(), - prefab_hash: -913649823i32, - desc: "When the sun sets and the Mining Drill runs dead, its batteries drained and your Solar Panel cold and lifeless, the Autolathe empty, the way forward unclear, one thing holds back the endless night of defeat: the trusty pickaxe." - .into(), - name: "Pickaxe".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1118069417i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPillHeal".into(), - prefab_hash: 1118069417i32, - desc: "Three centuries of pharmaceutical technology compressed into one small, easy to ingest pill: the Heal Pill, aka the Proton Pill, aka Mr Happy contains active enzymes, therapeutic proteins, modified microbial strains, and mammalian cell line analogues in a single-dose boost of high purity, efficacy, and potency that potentiates a swift parasympathetic immune response." - .into(), - name: "Pill (Medical)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 418958601i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPillStun".into(), - prefab_hash: 418958601i32, - desc: "Through rarely publicized, the existence of this pill is an open secret. For use when all else has failed, the Sayonara Suppository immobilizes and rapidly ends the average Stationeer. The delivery mode ensures that if a Stationeer chooses to take this pill, they really have to want it." - .into(), - name: "Pill (Paralysis)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -767597887i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeAnalyizer".into(), - prefab_hash: -767597887i32, - desc: "This kit creates a Pipe Analyzer." - .into(), - name: "Kit (Pipe Analyzer)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -38898376i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeCowl".into(), - prefab_hash: -38898376i32, - desc: "This creates a Pipe Cowl that can be placed on the end of pipes to expose them to the world atmospheres." - .into(), - name: "Pipe Cowl".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 20u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1532448832i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeDigitalValve".into(), - prefab_hash: -1532448832i32, - desc: "This kit creates a Digital Valve." - .into(), - name: "Kit (Digital Valve)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1134459463i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeGasMixer".into(), - prefab_hash: -1134459463i32, - desc: "This kit creates a Gas Mixer." - .into(), - name: "Kit (Gas Mixer)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1751627006i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeHeater".into(), - prefab_hash: -1751627006i32, - desc: "Creates a Pipe Heater (Gas)." - .into(), - name: "Pipe Heater Kit (Gas)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1366030599i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeIgniter".into(), - prefab_hash: 1366030599i32, - desc: "".into(), - name: "Kit (Pipe Igniter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 391769637i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeLabel".into(), - prefab_hash: 391769637i32, - desc: "This kit creates a Pipe Label." - .into(), - name: "Kit (Pipe Label)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 20u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -906521320i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeLiquidRadiator".into(), - prefab_hash: -906521320i32, - desc: "This kit creates a Liquid Pipe Convection Radiator." - .into(), - name: "Kit (Liquid Radiator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1207939683i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeMeter".into(), - prefab_hash: 1207939683i32, - desc: "This kit creates a Pipe Meter." - .into(), - name: "Kit (Pipe Meter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1796655088i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeRadiator".into(), - prefab_hash: -1796655088i32, - desc: "This kit creates a Pipe Convection Radiator." - .into(), - name: "Kit (Radiator)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 799323450i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeValve".into(), - prefab_hash: 799323450i32, - desc: "This kit creates a Valve." - .into(), - name: "Kit (Pipe Valve)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1766301997i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPipeVolumePump".into(), - prefab_hash: -1766301997i32, - desc: "This kit creates a Volume Pump." - .into(), - name: "Kit (Volume Pump)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1108244510i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlainCake".into(), - prefab_hash: -1108244510i32, - desc: "".into(), - name: "Cake".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1159179557i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlantEndothermic_Creative".into(), - prefab_hash: -1159179557i32, - desc: "".into(), - name: "Endothermic Plant Creative".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 851290561i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlantEndothermic_Genepool1".into(), - prefab_hash: 851290561i32, - desc: "Agrizero\'s Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings, when supplied with sufficient Nitrogen. The alpha variant has a peak cooling and electrolysis capacity of 90Watts and is most efficient operating in air temperatures of 0 to 40 Degrees Celsius." - .into(), - name: "Winterspawn (Alpha variant)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1414203269i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlantEndothermic_Genepool2".into(), - prefab_hash: -1414203269i32, - desc: "Agrizero\'s Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings when supplied with sufficient Nitrogen. The beta variant has a peak cooling and electrolysis capacity of 150Watts and is most efficient operating in air temperatures of 14 to 24 Degrees Celsius." - .into(), - name: "Winterspawn (Beta variant)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 173023800i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlantSampler".into(), - prefab_hash: 173023800i32, - desc: "The Plant Sampler allows you to take a gene sample of a growing plant. The sampler can then be placed in the Plant Genetic Analyzer to attain and interpret the results." - .into(), - name: "Plant Sampler".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -532672323i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlantSwitchGrass".into(), - prefab_hash: -532672323i32, - desc: "".into(), - name: "Switch Grass".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1208890208i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlantThermogenic_Creative".into(), - prefab_hash: -1208890208i32, - desc: "".into(), - name: "Thermogenic Plant Creative".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -177792789i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlantThermogenic_Genepool1".into(), - prefab_hash: -177792789i32, - desc: "The Agrizero\'s-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant." - .into(), - name: "Hades Flower (Alpha strain)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1819167057i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlantThermogenic_Genepool2".into(), - prefab_hash: 1819167057i32, - desc: "The Agrizero\'s-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant. The beta strain is notably more efficient than the earlier, more experimental alpha variant." - .into(), - name: "Hades Flower (Beta strain)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 662053345i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPlasticSheets".into(), - prefab_hash: 662053345i32, - desc: "".into(), - name: "Plastic Sheets".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1929046963i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPotato".into(), - prefab_hash: 1929046963i32, - desc: " Potatoes are a simple, fast growing crop that can keep Stationeers alive in emergencies." - .into(), - name: "Potato".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 20u32, - reagents: Some(vec![("Potato".into(), 1f64)].into_iter().collect()), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2111886401i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPotatoBaked".into(), - prefab_hash: -2111886401i32, - desc: "".into(), - name: "Baked Potato".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 1u32, - reagents: Some(vec![("Potato".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 839924019i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPowerConnector".into(), - prefab_hash: 839924019i32, - desc: "This kit creates a Power Connector." - .into(), - name: "Kit (Power Connector)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1277828144i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPumpkin".into(), - prefab_hash: 1277828144i32, - desc: "Pumpkins are a perennial plant, with both a long growth time, and a long time between harvests. Its low requirement for darkness allows for accelerated growing if provided with extra light." - .into(), - name: "Pumpkin".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 20u32, - reagents: Some(vec![("Pumpkin".into(), 1f64)].into_iter().collect()), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 62768076i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPumpkinPie".into(), - prefab_hash: 62768076i32, - desc: "".into(), - name: "Pumpkin Pie".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1277979876i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPumpkinSoup".into(), - prefab_hash: 1277979876i32, - desc: "Made using Cooked Pumpkin and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay" - .into(), - name: "Pumpkin Soup".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1616308158i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIce".into(), - prefab_hash: -1616308158i32, - desc: "A frozen chunk of pure Water" - .into(), - name: "Pure Ice Water".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1251009404i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceCarbonDioxide".into(), - prefab_hash: -1251009404i32, - desc: "A frozen chunk of pure Carbon Dioxide" - .into(), - name: "Pure Ice Carbon Dioxide".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 944530361i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceHydrogen".into(), - prefab_hash: 944530361i32, - desc: "A frozen chunk of pure Hydrogen" - .into(), - name: "Pure Ice Hydrogen".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1715945725i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceLiquidCarbonDioxide".into(), - prefab_hash: -1715945725i32, - desc: "A frozen chunk of pure Liquid Carbon Dioxide" - .into(), - name: "Pure Ice Liquid Carbon Dioxide".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1044933269i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceLiquidHydrogen".into(), - prefab_hash: -1044933269i32, - desc: "A frozen chunk of pure Liquid Hydrogen" - .into(), - name: "Pure Ice Liquid Hydrogen".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1674576569i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceLiquidNitrogen".into(), - prefab_hash: 1674576569i32, - desc: "A frozen chunk of pure Liquid Nitrogen" - .into(), - name: "Pure Ice Liquid Nitrogen".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1428477399i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceLiquidNitrous".into(), - prefab_hash: 1428477399i32, - desc: "A frozen chunk of pure Liquid Nitrous Oxide" - .into(), - name: "Pure Ice Liquid Nitrous".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 541621589i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceLiquidOxygen".into(), - prefab_hash: 541621589i32, - desc: "A frozen chunk of pure Liquid Oxygen" - .into(), - name: "Pure Ice Liquid Oxygen".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1748926678i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceLiquidPollutant".into(), - prefab_hash: -1748926678i32, - desc: "A frozen chunk of pure Liquid Pollutant" - .into(), - name: "Pure Ice Liquid Pollutant".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1306628937i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceLiquidVolatiles".into(), - prefab_hash: -1306628937i32, - desc: "A frozen chunk of pure Liquid Volatiles" - .into(), - name: "Pure Ice Liquid Volatiles".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1708395413i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceNitrogen".into(), - prefab_hash: -1708395413i32, - desc: "A frozen chunk of pure Nitrogen" - .into(), - name: "Pure Ice Nitrogen".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 386754635i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceNitrous".into(), - prefab_hash: 386754635i32, - desc: "A frozen chunk of pure Nitrous Oxide" - .into(), - name: "Pure Ice NitrousOxide".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1150448260i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceOxygen".into(), - prefab_hash: -1150448260i32, - desc: "A frozen chunk of pure Oxygen" - .into(), - name: "Pure Ice Oxygen".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1755356i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIcePollutant".into(), - prefab_hash: -1755356i32, - desc: "A frozen chunk of pure Pollutant" - .into(), - name: "Pure Ice Pollutant".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2073202179i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIcePollutedWater".into(), - prefab_hash: -2073202179i32, - desc: "A frozen chunk of Polluted Water" - .into(), - name: "Pure Ice Polluted Water".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -874791066i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceSteam".into(), - prefab_hash: -874791066i32, - desc: "A frozen chunk of pure Steam" - .into(), - name: "Pure Ice Steam".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -633723719i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemPureIceVolatiles".into(), - prefab_hash: -633723719i32, - desc: "A frozen chunk of pure Volatiles" - .into(), - name: "Pure Ice Volatiles".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 495305053i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRTG".into(), - prefab_hash: 495305053i32, - desc: "This kit creates that miracle of modern science, a Kit (Creative RTG)." - .into(), - name: "Kit (Creative RTG)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1817645803i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRTGSurvival".into(), - prefab_hash: 1817645803i32, - desc: "This kit creates a Kit (RTG)." - .into(), - name: "Kit (RTG)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1641500434i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemReagentMix".into(), - prefab_hash: -1641500434i32, - desc: "Reagent mix is pure potential. A slurry of undifferentiated ores, it is output by the Recycler and can be fed into the Centrifuge to separate and recover the individual materials. Reagent mix is also output by the Furnace when the current contents are ejected without smelting a specific ingot." - .into(), - name: "Reagent Mix".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 678483886i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRemoteDetonator".into(), - prefab_hash: 678483886i32, - desc: "".into(), - name: "Remote Detonator".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1773192190i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemReusableFireExtinguisher".into(), - prefab_hash: -1773192190i32, - desc: "Requires a canister filled with any inert liquid to opperate." - .into(), - name: "Fire Extinguisher (Reusable)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Liquid Canister".into(), typ : - Class::LiquidCanister } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 658916791i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRice".into(), - prefab_hash: 658916791i32, - desc: "Rice grows at a moderate rate as long as its supplied with plenty of water. Being more dependant on water, rice plants can easily die during periods of drought." - .into(), - name: "Rice".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Rice".into(), 1f64)].into_iter().collect()), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 871811564i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRoadFlare".into(), - prefab_hash: 871811564i32, - desc: "Designed to burn anywhere in the Solar System, the EZC magnesium fusee supplies its own oxygen to fuel combustion, and dispel the eternal night of space." - .into(), - name: "Road Flare".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 20u32, - reagents: None, - slot_class: Class::Flare, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2109945337i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRocketMiningDrillHead".into(), - prefab_hash: 2109945337i32, - desc: "Replaceable drill head for Rocket Miner" - .into(), - name: "Mining-Drill Head (Basic)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::DrillHead, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1530764483i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRocketMiningDrillHeadDurable".into(), - prefab_hash: 1530764483i32, - desc: "".into(), - name: "Mining-Drill Head (Durable)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::DrillHead, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 653461728i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRocketMiningDrillHeadHighSpeedIce".into(), - prefab_hash: 653461728i32, - desc: "".into(), - name: "Mining-Drill Head (High Speed Ice)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::DrillHead, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1440678625i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRocketMiningDrillHeadHighSpeedMineral".into(), - prefab_hash: 1440678625i32, - desc: "".into(), - name: "Mining-Drill Head (High Speed Mineral)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::DrillHead, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -380904592i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRocketMiningDrillHeadIce".into(), - prefab_hash: -380904592i32, - desc: "".into(), - name: "Mining-Drill Head (Ice)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::DrillHead, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -684020753i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRocketMiningDrillHeadLongTerm".into(), - prefab_hash: -684020753i32, - desc: "".into(), - name: "Mining-Drill Head (Long Term)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::DrillHead, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1083675581i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRocketMiningDrillHeadMineral".into(), - prefab_hash: 1083675581i32, - desc: "".into(), - name: "Mining-Drill Head (Mineral)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::DrillHead, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1198702771i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemRocketScanningHead".into(), - prefab_hash: -1198702771i32, - desc: "".into(), - name: "Rocket Scanner Head".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::ScanningHead, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1661270830i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemScanner".into(), - prefab_hash: 1661270830i32, - desc: "A mysterious piece of technology, rumored to have Zrillian origins." - .into(), - name: "Handheld Scanner".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 687940869i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemScrewdriver".into(), - prefab_hash: 687940869i32, - desc: "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It\'s definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units." - .into(), - name: "Screwdriver".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1981101032i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSecurityCamera".into(), - prefab_hash: -1981101032i32, - desc: "Security cameras can be paired with a Motion Sensor, then connected to a Console fitted with a Camera Display for that \'always watched\' feeling." - .into(), - name: "Security Camera".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1176140051i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSensorLenses".into(), - prefab_hash: -1176140051i32, - desc: "These Norsec glasses might not be the most fashionable thing, but when a Sensor Processing Unit (Ore Scanner) is inserted, Stationeers can use these handy glasses to x-ray the ground and find ores that are hidden beneath the surface." - .into(), - name: "Sensor Lenses".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Glasses, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Sensor Processing Unit".into(), typ : - Class::SensorProcessingUnit } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1154200014i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSensorProcessingUnitCelestialScanner".into(), - prefab_hash: -1154200014i32, - desc: "".into(), - name: "Sensor Processing Unit (Celestial Scanner)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::SensorProcessingUnit, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1730464583i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSensorProcessingUnitMesonScanner".into(), - prefab_hash: -1730464583i32, - desc: "The T-Ray Scanner Sensor Processing Unit can be inserted into the Sensor Lenses to show an overlay of pipes and cables. This can be useful when building behind walls or other structures." - .into(), - name: "Sensor Processing Unit (T-Ray Scanner)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::SensorProcessingUnit, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1219128491i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSensorProcessingUnitOreScanner".into(), - prefab_hash: -1219128491i32, - desc: "The Sensor Processing unit can be inserted into Sensor Lenses to reveal underground minerals in a HUD." - .into(), - name: "Sensor Processing Unit (Ore Scanner)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::SensorProcessingUnit, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -290196476i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSiliconIngot".into(), - prefab_hash: -290196476i32, - desc: "".into(), - name: "Ingot (Silicon)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Silicon".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1103972403i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSiliconOre".into(), - prefab_hash: 1103972403i32, - desc: "Silicon is a chemical element with the symbol \"Si\" and is one of the most useful elements to Stationeers. Readily available throughout the universe, silicon is used in a range of alloys, glass, plastics and various electronic components a Stationeer may need to complete their mission." - .into(), - name: "Ore (Silicon)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Silicon".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -929742000i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSilverIngot".into(), - prefab_hash: -929742000i32, - desc: "".into(), - name: "Ingot (Silver)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Silver".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -916518678i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSilverOre".into(), - prefab_hash: -916518678i32, - desc: "Silver is a chemical element with the symbol \"Ag\". Valued by many Stationeers for its attractive luster and sheen, it is also used in a variety of electronics components and alloys." - .into(), - name: "Ore (Silver)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Silver".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -82508479i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSolderIngot".into(), - prefab_hash: -82508479i32, - desc: "".into(), - name: "Ingot (Solder)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Solder".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -365253871i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSolidFuel".into(), - prefab_hash: -365253871i32, - desc: "".into(), - name: "Solid Fuel (Hydrocarbon)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some( - vec![("Hydrocarbon".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Ore, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1883441704i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSoundCartridgeBass".into(), - prefab_hash: -1883441704i32, - desc: "".into(), - name: "Sound Cartridge Bass".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::SoundCartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1901500508i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSoundCartridgeDrums".into(), - prefab_hash: -1901500508i32, - desc: "".into(), - name: "Sound Cartridge Drums".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::SoundCartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1174735962i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSoundCartridgeLeads".into(), - prefab_hash: -1174735962i32, - desc: "".into(), - name: "Sound Cartridge Leads".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::SoundCartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1971419310i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSoundCartridgeSynth".into(), - prefab_hash: -1971419310i32, - desc: "".into(), - name: "Sound Cartridge Synth".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::SoundCartridge, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1387403148i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSoyOil".into(), - prefab_hash: 1387403148i32, - desc: "".into(), - name: "Soy Oil".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some(vec![("Oil".into(), 1f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1924673028i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSoybean".into(), - prefab_hash: 1924673028i32, - desc: " Soybeans grow at a moderate rate, but require atmospheric Nitrogen to grow. Its main use is to create Soy Oil" - .into(), - name: "Soybean".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some(vec![("Soy".into(), 1f64)].into_iter().collect()), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1737666461i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSpaceCleaner".into(), - prefab_hash: -1737666461i32, - desc: "There was a time when humanity really wanted to keep space clean. That time has passed." - .into(), - name: "Space Cleaner".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 714830451i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSpaceHelmet".into(), - prefab_hash: 714830451i32, - desc: "The basic space helmet insulates Stationeers against everything from hard vacuum to weird cooking smells. Providing a pressure-controlled, breathable atmosphere, it comes with a built-in light powered by your Eva Suit Battery Cell (Small).\nIt also incorporates a lock/unlock feature to avoid accidental opening, as well as a flush function to expel and replace the internal atmosphere. If damaged, use Duct Tape to fix it, or paint it any color you like using the Paint Mixer." - .into(), - name: "Space Helmet".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Helmet, - sorting_class: SortingClass::Clothing, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: Some(InternalAtmoInfo { volume: 3f32 }), - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::TotalMoles, - MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::ReadWrite), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), - (LogicType::Flush, MemoryAccess::Write), (LogicType::SoundAlert, - MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, - MemoryAccess::Read), (LogicType::RatioLiquidOxygen, - MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, - MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - 675686937i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSpaceIce".into(), - prefab_hash: 675686937i32, - desc: "".into(), - name: "Space Ice".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2131916219i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSpaceOre".into(), - prefab_hash: 2131916219i32, - desc: "Ore mined from asteroids via the Rocket Miner which then must be processed in the Centrifuge, or Combustion Centrifuge to produce smeltable ores." - .into(), - name: "Dirty Ore".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 100u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1260618380i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSpacepack".into(), - prefab_hash: -1260618380i32, - desc: "The basic CHAC spacepack isn\'t \'technically\' a jetpack, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Jetpack Basic or Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move." - .into(), - name: "Spacepack".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Back, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Propellant".into(), typ : Class::GasCanister }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -688107795i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanBlack".into(), - prefab_hash: -688107795i32, - desc: "Go classic, clandestine or just plain Gothic with black paint, which can be applied to most items. Each can has 20 uses." - .into(), - name: "Spray Paint (Black)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -498464883i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanBlue".into(), - prefab_hash: -498464883i32, - desc: "What kind of a color is blue? The kind of of color that says, \'Hey, what about me?\'" - .into(), - name: "Spray Paint (Blue)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 845176977i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanBrown".into(), - prefab_hash: 845176977i32, - desc: "In more artistic Stationeers circles, the absence of brown is often lamented, but seldom changed." - .into(), - name: "Spray Paint (Brown)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1880941852i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanGreen".into(), - prefab_hash: -1880941852i32, - desc: "Green is the color of life, and longing. Paradoxically, it\'s also the color of envy, and tolerance. It denotes sickness, youth, and wealth. But really, it\'s just what light does at around 500 billionths of a meter." - .into(), - name: "Spray Paint (Green)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1645266981i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanGrey".into(), - prefab_hash: -1645266981i32, - desc: "Arguably the most popular color in the universe, grey was invented so designers had something to do." - .into(), - name: "Spray Paint (Grey)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1918456047i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanKhaki".into(), - prefab_hash: 1918456047i32, - desc: "Not so much a single color, as a category of boredom, khaki is the pigmentation equivalent of a mild depressive episode." - .into(), - name: "Spray Paint (Khaki)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -158007629i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanOrange".into(), - prefab_hash: -158007629i32, - desc: "Orange is fun, but also suggestive of hazards. Sitting proudly in the middle of the visual spectrum, it has nothing to prove." - .into(), - name: "Spray Paint (Orange)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1344257263i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanPink".into(), - prefab_hash: 1344257263i32, - desc: "With the invention of enduring chemical dyes, the 20th century bestowed associations with innocence and tenderness upon this pale tint of red. Yet classically, it was the color of seduction and eroticism. Things change." - .into(), - name: "Spray Paint (Pink)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 30686509i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanPurple".into(), - prefab_hash: 30686509i32, - desc: "Purple is a curious color. You need to be careful with purple. It can be very good, or go horribly, horribly wrong." - .into(), - name: "Spray Paint (Purple)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1514393921i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanRed".into(), - prefab_hash: 1514393921i32, - desc: "The king of colors, red is perhaps the defining tone of the universe. Linked to blood, royalty, fire and damnation, it is the chromatic expression of power." - .into(), - name: "Spray Paint (Red)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 498481505i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanWhite".into(), - prefab_hash: 498481505i32, - desc: "White looks clean, sharp and nice. But Stationeering can be a dirty job. White tends to scuff." - .into(), - name: "Spray Paint (White)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 995468116i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayCanYellow".into(), - prefab_hash: 995468116i32, - desc: "A caricature of light itself, yellow lacks the self-confidence of red, or the swagger of purple. It\'s less fun than orange, but less emotionally limp than khaki. It\'s hard to know when yellow is appropriate, but it persists as a primary color regardless. Suggesting that yellow gonna yellow, no matter what anyone thinks." - .into(), - name: "Spray Paint (Yellow)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Bottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1289723966i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSprayGun".into(), - prefab_hash: 1289723966i32, - desc: "Use with Spray cans in the Spray Can to paint structures, cables and pipes. Much more efficient and faster than doing it with individual spray cans." - .into(), - name: "Spray Gun".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "Spray Can".into(), typ : Class::Bottle }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1448105779i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSteelFrames".into(), - prefab_hash: -1448105779i32, - desc: "An advanced and stronger version of Iron Frames, steel frames are placed by right-clicking. To complete construction, use Steel Sheets and a Welding Torch in your active hand." - .into(), - name: "Steel Frames".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 30u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -654790771i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSteelIngot".into(), - prefab_hash: -654790771i32, - desc: "Steel ingots are a metal alloy, crafted in a Furnace by smelting Ore (Iron) and Ore (Coal) at a ratio of 3:1.\nIt may not be elegant, but Ice (Oxite) and Ice (Volatiles) can be combined at a ratio of 1:2 in a furnace to create the necessary gas mixture for smelting." - .into(), - name: "Ingot (Steel)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Steel".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 38555961i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSteelSheets".into(), - prefab_hash: 38555961i32, - desc: "An advanced building material, Ingot (Steel) sheets are used when constructing a Steel Frame and several other wall types." - .into(), - name: "Steel Sheets".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2038663432i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemStelliteGlassSheets".into(), - prefab_hash: -2038663432i32, - desc: "A stronger glass substitute.".into(), - name: "Stellite Glass Sheets".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1897868623i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemStelliteIngot".into(), - prefab_hash: -1897868623i32, - desc: "".into(), - name: "Ingot (Stellite)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some( - vec![("Stellite".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2111910840i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSugar".into(), - prefab_hash: 2111910840i32, - desc: "".into(), - name: "Sugar".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some(vec![("Sugar".into(), 10f64)].into_iter().collect()), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1335056202i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSugarCane".into(), - prefab_hash: -1335056202i32, - desc: "".into(), - name: "Sugarcane".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some(vec![("Sugar".into(), 1f64)].into_iter().collect()), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1274308304i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemSuitModCryogenicUpgrade".into(), - prefab_hash: -1274308304i32, - desc: "Enables suits with basic cooling functionality to work with cryogenic liquid." - .into(), - name: "Cryogenic Suit Upgrade".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::SuitMod, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -229808600i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemTablet".into(), - prefab_hash: -229808600i32, - desc: "The Xigo handheld \'Padi\' tablet is an all-purpose data platform, provided as standard issue to all Stationeers. A dynamic multi-tool that accepts a range of cartridges, the Padi becomes an Atmos Analyzer or Tracker, Medical Analyzer, Ore Scanner, eReader, and various other functions." - .into(), - name: "Handheld Tablet".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Cartridge".into(), typ : Class::Cartridge } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 111280987i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemTerrainManipulator".into(), - prefab_hash: 111280987i32, - desc: "0.Mode0\n1.Mode1".into(), - name: "Terrain Manipulator".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Dirt Canister".into(), typ : Class::Ore } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -998592080i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemTomato".into(), - prefab_hash: -998592080i32, - desc: "Tomato plants are perennial, and will produce multiple harvests without needing to be replanted. Once the plant is mature, it will fruit at a moderate pace." - .into(), - name: "Tomato".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 20u32, - reagents: Some(vec![("Tomato".into(), 1f64)].into_iter().collect()), - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 688734890i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemTomatoSoup".into(), - prefab_hash: 688734890i32, - desc: "Made using Cooked Tomatos and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine." - .into(), - name: "Tomato Soup".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -355127880i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemToolBelt".into(), - prefab_hash: -355127880i32, - desc: "If there\'s one piece of equipment that embodies Stationeer life above all else, it\'s the humble toolbelt (Editor\'s note: a recent ODA survey of iconic Stationeer equipment also rated the smoking, toxic ruins of an over-pressurized Furnace lying amid the charred remains of your latest base very highly).\nDesigned to meet the most strict-ish ODA safety standards, the toolbelt\'s eight slots hold one thing: tools, and Cable Coil. Not to be confused with the Mining Belt." - .into(), - name: "Tool Belt".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Belt, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name - : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" - .into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ : - Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, - SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name - : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" - .into(), typ : Class::Tool } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -800947386i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemTropicalPlant".into(), - prefab_hash: -800947386i32, - desc: "An anthurium, evolved in the jungles of South America, which will tolerate higher temperatures than most plants." - .into(), - name: "Tropical Lily".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1516581844i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemUraniumOre".into(), - prefab_hash: -1516581844i32, - desc: "In 1934, Enrico Fermi noticed that bombarding uranium with neutrons produced a burst of beta rays, and a new material. This process was named \'nuclear fission\', and resulted in cheap energy, the Cold War, and countless thousand deaths. While reasonably common throughout the Solar System, Stationeers are wary of the material." - .into(), - name: "Ore (Uranium)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 50u32, - reagents: Some(vec![("Uranium".into(), 1f64)].into_iter().collect()), - slot_class: Class::Ore, - sorting_class: SortingClass::Ores, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1253102035i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemVolatiles".into(), - prefab_hash: 1253102035i32, - desc: "An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity\'s sake, these are often displayed as H2 by devices like the Atmos Analyzer.\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n" - .into(), - name: "Ice (Volatiles)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 50u32, - reagents: None, - slot_class: Class::Ore, - sorting_class: SortingClass::Ices, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1567752627i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWallCooler".into(), - prefab_hash: -1567752627i32, - desc: "This kit creates a Wall Cooler." - .into(), - name: "Kit (Wall Cooler)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1880134612i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWallHeater".into(), - prefab_hash: 1880134612i32, - desc: "This kit creates a Kit (Wall Heater)." - .into(), - name: "Kit (Wall Heater)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1108423476i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWallLight".into(), - prefab_hash: 1108423476i32, - desc: "This kit creates any one of ten Kit (Lights) variants." - .into(), - name: "Kit (Lights)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 156348098i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWaspaloyIngot".into(), - prefab_hash: 156348098i32, - desc: "".into(), - name: "Ingot (Waspaloy)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 500u32, - reagents: Some( - vec![("Waspaloy".into(), 1f64)].into_iter().collect(), - ), - slot_class: Class::Ingot, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 107741229i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWaterBottle".into(), - prefab_hash: 107741229i32, - desc: "Delicious and pure H20, refined from local sources as varied as Venusian ice and trans-Solar comets. Empty bottles can be refilled using the Water Bottle Filler." - .into(), - name: "Water Bottle".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::LiquidBottle, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 309693520i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWaterPipeDigitalValve".into(), - prefab_hash: 309693520i32, - desc: "".into(), - name: "Kit (Liquid Digital Valve)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -90898877i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWaterPipeMeter".into(), - prefab_hash: -90898877i32, - desc: "".into(), - name: "Kit (Liquid Pipe Meter)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1721846327i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWaterWallCooler".into(), - prefab_hash: -1721846327i32, - desc: "".into(), - name: "Kit (Liquid Wall Cooler)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 5u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -598730959i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWearLamp".into(), - prefab_hash: -598730959i32, - desc: "".into(), - name: "Headlamp".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Helmet, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -2066892079i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWeldingTorch".into(), - prefab_hash: -2066892079i32, - desc: "Stored in the standard issue Stationeers Tool Belt, the Arlite welding torch is used to construct a range of essential structures.\nAn upgraded version of the classic \'Zairo\' model first manufactured by ExMin for modular space habitat assembly, the Arlite is powered by a single Canister (Fuel) and designed to function equally well in deep space and deep gravity wells." - .into(), - name: "Welding Torch".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.5f32, - radiation_factor: 0.5f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1057658015i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWheat".into(), - prefab_hash: -1057658015i32, - desc: "A classical symbol of growth and new life, wheat takes a moderate time to grow. Its main use is to create flour using the Reagent Processor." - .into(), - name: "Wheat".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some(vec![("Carbon".into(), 1f64)].into_iter().collect()), - slot_class: Class::Plant, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1535854074i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWireCutters".into(), - prefab_hash: 1535854074i32, - desc: "Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools." - .into(), - name: "Wire Cutters".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -504717121i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWirelessBatteryCellExtraLarge".into(), - prefab_hash: -504717121i32, - desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" - .into(), - name: "Wireless Battery Cell Extra Large".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Battery, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Mode, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - -1826023284i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageAirConditioner1".into(), - prefab_hash: -1826023284i32, - desc: "".into(), - name: "Wreckage Air Conditioner".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 169888054i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageAirConditioner2".into(), - prefab_hash: 169888054i32, - desc: "".into(), - name: "Wreckage Air Conditioner".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -310178617i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageHydroponicsTray1".into(), - prefab_hash: -310178617i32, - desc: "".into(), - name: "Wreckage Hydroponics Tray".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -997763i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageLargeExtendableRadiator01".into(), - prefab_hash: -997763i32, - desc: "".into(), - name: "Wreckage Large Extendable Radiator".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 391453348i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageStructureRTG1".into(), - prefab_hash: 391453348i32, - desc: "".into(), - name: "Wreckage Structure RTG".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -834664349i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageStructureWeatherStation001".into(), - prefab_hash: -834664349i32, - desc: "".into(), - name: "Wreckage Structure Weather Station".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1464424921i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageStructureWeatherStation002".into(), - prefab_hash: 1464424921i32, - desc: "".into(), - name: "Wreckage Structure Weather Station".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 542009679i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageStructureWeatherStation003".into(), - prefab_hash: 542009679i32, - desc: "".into(), - name: "Wreckage Structure Weather Station".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1104478996i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageStructureWeatherStation004".into(), - prefab_hash: -1104478996i32, - desc: "".into(), - name: "Wreckage Structure Weather Station".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -919745414i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageStructureWeatherStation005".into(), - prefab_hash: -919745414i32, - desc: "".into(), - name: "Wreckage Structure Weather Station".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1344576960i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageStructureWeatherStation006".into(), - prefab_hash: 1344576960i32, - desc: "".into(), - name: "Wreckage Structure Weather Station".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 656649558i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageStructureWeatherStation007".into(), - prefab_hash: 656649558i32, - desc: "".into(), - name: "Wreckage Structure Weather Station".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1214467897i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageStructureWeatherStation008".into(), - prefab_hash: -1214467897i32, - desc: "".into(), - name: "Wreckage Structure Weather Station".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1662394403i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageTurbineGenerator1".into(), - prefab_hash: -1662394403i32, - desc: "".into(), - name: "Wreckage Turbine Generator".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 98602599i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageTurbineGenerator2".into(), - prefab_hash: 98602599i32, - desc: "".into(), - name: "Wreckage Turbine Generator".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1927790321i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageTurbineGenerator3".into(), - prefab_hash: 1927790321i32, - desc: "".into(), - name: "Wreckage Turbine Generator".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1682930158i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageWallCooler1".into(), - prefab_hash: -1682930158i32, - desc: "".into(), - name: "Wreckage Wall Cooler".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 45733800i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWreckageWallCooler2".into(), - prefab_hash: 45733800i32, - desc: "".into(), - name: "Wreckage Wall Cooler".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Wreckage, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1886261558i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ItemWrench".into(), - prefab_hash: -1886261558i32, - desc: "One of humanity\'s enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures" - .into(), - name: "Wrench".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Tool, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1932952652i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "KitSDBSilo".into(), - prefab_hash: 1932952652i32, - desc: "This kit creates a SDB Silo." - .into(), - name: "Kit (SDB Silo)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 231903234i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "KitStructureCombustionCentrifuge".into(), - prefab_hash: 231903234i32, - desc: "".into(), - name: "Kit (Combustion Centrifuge)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Kits, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1427415566i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "KitchenTableShort".into(), - prefab_hash: -1427415566i32, - desc: "".into(), - name: "Kitchen Table (Short)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -78099334i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "KitchenTableSimpleShort".into(), - prefab_hash: -78099334i32, - desc: "".into(), - name: "Kitchen Table (Simple Short)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1068629349i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "KitchenTableSimpleTall".into(), - prefab_hash: -1068629349i32, - desc: "".into(), - name: "Kitchen Table (Simple Tall)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1386237782i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "KitchenTableTall".into(), - prefab_hash: -1386237782i32, - desc: "".into(), - name: "Kitchen Table (Tall)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1605130615i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "Lander".into(), - prefab_hash: 1605130615i32, - desc: "".into(), - name: "Lander".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "Entity".into(), typ : Class::Entity } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1295222317i32, - StructureLogicTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_2x2CenterPiece01".into(), - prefab_hash: -1295222317i32, - desc: "Recommended for larger traders. This allows for the creation of 4x4 and 6x6 landing areas with symetrical doors" - .into(), - name: "Landingpad 2x2 Center Piece".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![].into_iter().collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - 912453390i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_BlankPiece".into(), - prefab_hash: 912453390i32, - desc: "".into(), - name: "Landingpad".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1070143159i32, - StructureLogicTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_CenterPiece01".into(), - prefab_hash: 1070143159i32, - desc: "The target point where the trader shuttle will land. Requires a clear view of the sky." - .into(), - name: "Landingpad Center".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![].into_iter().collect(), - modes: Some( - vec![ - (0u32, "None".into()), (1u32, "NoContact".into()), (2u32, - "Moving".into()), (3u32, "Holding".into()), (4u32, "Landed" - .into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - } - .into(), - ), - ( - 1101296153i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_CrossPiece".into(), - prefab_hash: 1101296153i32, - desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area." - .into(), - name: "Landingpad Cross".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2066405918i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_DataConnectionPiece".into(), - prefab_hash: -2066405918i32, - desc: "Provides power to the landing pad. The data port must be connected to the data port of a computer with a communications motherboard for a trader to be called in to land." - .into(), - name: "Landingpad Data And Power".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Vertical, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::ContactTypeId, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "None".into()), (1u32, "NoContact".into()), (2u32, - "Moving".into()), (3u32, "Holding".into()), (4u32, "Landed" - .into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::LandingPad, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 977899131i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_DiagonalPiece01".into(), - prefab_hash: 977899131i32, - desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area." - .into(), - name: "Landingpad Diagonal".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 817945707i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_GasConnectorInwardPiece".into(), - prefab_hash: 817945707i32, - desc: "".into(), - name: "Landingpad Gas Input".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::LandingPad, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1100218307i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_GasConnectorOutwardPiece".into(), - prefab_hash: -1100218307i32, - desc: "Pumps gas purchased from a trader out of the landing pad. You can increase the landing pad\'s gas storage capacity by adding more Landingpad Gas Storage to the landing pad." - .into(), - name: "Landingpad Gas Output".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::LandingPad, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 170818567i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_GasCylinderTankPiece".into(), - prefab_hash: 170818567i32, - desc: "Increases the volume of the landing pads gas storage capacity. This volume is used for buying and selling gas to traders." - .into(), - name: "Landingpad Gas Storage".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1216167727i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_LiquidConnectorInwardPiece".into(), - prefab_hash: -1216167727i32, - desc: "".into(), - name: "Landingpad Liquid Input".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::LandingPad, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1788929869i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_LiquidConnectorOutwardPiece".into(), - prefab_hash: -1788929869i32, - desc: "Pumps liquid purchased from a trader out of the landing pad. You can increase the landing pad\'s liquid storage capacity by adding more Landingpad Gas Storage to the landing pad." - .into(), - name: "Landingpad Liquid Output".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::LandingPad, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -976273247i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_StraightPiece01".into(), - prefab_hash: -976273247i32, - desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area." - .into(), - name: "Landingpad Straight".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1872345847i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_TaxiPieceCorner".into(), - prefab_hash: -1872345847i32, - desc: "".into(), - name: "Landingpad Taxi Corner".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 146051619i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_TaxiPieceHold".into(), - prefab_hash: 146051619i32, - desc: "".into(), - name: "Landingpad Taxi Hold".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1477941080i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_TaxiPieceStraight".into(), - prefab_hash: -1477941080i32, - desc: "".into(), - name: "Landingpad Taxi Straight".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1514298582i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "Landingpad_ThreshholdPiece".into(), - prefab_hash: -1514298582i32, - desc: "".into(), - name: "Landingpad Threshhold".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::LandingPad, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::LandingPad, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1531272458i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "LogicStepSequencer8".into(), - prefab_hash: 1531272458i32, - desc: "The ODA does not approve of soundtracks or other distractions.\nAs such, Stationeers have had to create their own musical accompaniment to the demanding labor of building and maintaining off-world infrastructure.\nCentral to this pastime is the step sequencer, which allows Stationeers to sequence short musical patterns or loops. \n\nDIY MUSIC - GETTING STARTED\n\n1: Connect 8 Device Step Units to your step sequencer via the data port on the left hand side.\n\n2: Label each step unit, then assign step units 1 through 8 on the step sequencer using the screwdriver.\n\n3: Select the output speaker (eg Passive Speaker) where the sequencer will play the sounds. This needs to be connected to the logic network on the right hand side of the sequencer.\n\n4: Place a Stop Watch and use a Logic Reader and Logic Writer to write the time to the time variable on the sequencer.\n\n5: Set the BPM on the sequencer using a Dial and a Logic Writer to write to the sequencer\'s BPM variable. A higher bpm will play the sequence faster. \n\n6: Insert a sound cartridge of your choosing and select which variant of sound you wish to play by pushing the arrow buttons located above and below the sound cartridge slot.\n\n7: Choose the pitch of the sounds to play by setting the dial on each of your 8 step units to the desired note. With drums, each note is a different drum sounds. You can trial your sounds by pushing the activate button on each step unit (with the sequencer inactive).\n\n8: Get freaky with the Low frequency oscillator.\n\n9: Finally, activate the sequencer, Vibeoneer." - .into(), - name: "Logic Step Sequencer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Time, MemoryAccess::ReadWrite), (LogicType::Bpm, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Whole Note".into()), (1u32, "Half Note".into()), - (2u32, "Quarter Note".into()), (3u32, "Eighth Note".into()), - (4u32, "Sixteenth Note".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Sound Cartridge".into(), typ : - Class::SoundCartridge } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -99064335i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "Meteorite".into(), - prefab_hash: -99064335i32, - desc: "".into(), - name: "Meteorite".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1667675295i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "MonsterEgg".into(), - prefab_hash: -1667675295i32, - desc: "".into(), - name: "".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -337075633i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "MotherboardComms".into(), - prefab_hash: -337075633i32, - desc: "When placed in a Computer and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land." - .into(), - name: "Communications Motherboard".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Motherboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 502555944i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "MotherboardLogic".into(), - prefab_hash: 502555944i32, - desc: "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items." - .into(), - name: "Logic Motherboard".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Motherboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -127121474i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "MotherboardMissionControl".into(), - prefab_hash: -127121474i32, - desc: "".into(), - name: "".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Motherboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -161107071i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "MotherboardProgrammableChip".into(), - prefab_hash: -161107071i32, - desc: "When placed in a Computer, the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing." - .into(), - name: "IC Editor Motherboard".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Motherboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -806986392i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "MotherboardRockets".into(), - prefab_hash: -806986392i32, - desc: "".into(), - name: "Rocket Control Motherboard".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Motherboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1908268220i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "MotherboardSorter".into(), - prefab_hash: -1908268220i32, - desc: "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass." - .into(), - name: "Sorter Motherboard".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Motherboard, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1930442922i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "MothershipCore".into(), - prefab_hash: -1930442922i32, - desc: "A relic of from an earlier era of space ambition, Sinotai\'s mothership cores formed the central element of a generation\'s space-going creations. While Sinotai\'s pivot to smaller, modular craft upset some purists, motherships continue to be built and maintained by dedicated enthusiasts." - .into(), - name: "Mothership Core".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 155856647i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "NpcChick".into(), - prefab_hash: 155856647i32, - desc: "".into(), - name: "Chick".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Brain".into(), typ : Class::Organ }, SlotInfo { - name : "Lungs".into(), typ : Class::Organ } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 399074198i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "NpcChicken".into(), - prefab_hash: 399074198i32, - desc: "".into(), - name: "Chicken".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Brain".into(), typ : Class::Organ }, SlotInfo { - name : "Lungs".into(), typ : Class::Organ } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 248893646i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "PassiveSpeaker".into(), - prefab_hash: 248893646i32, - desc: "".into(), - name: "Passive Speaker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Volume, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::ReadWrite), - (LogicType::SoundAlert, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::ReadWrite), - (LogicType::NameHash, MemoryAccess::ReadWrite) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 443947415i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "PipeBenderMod".into(), - prefab_hash: 443947415i32, - desc: "Apply to an Hydraulic Pipe Bender with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." - .into(), - name: "Pipe Bender Mod".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1958705204i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "PortableComposter".into(), - prefab_hash: -1958705204i32, - desc: "A simple composting device, the basic composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires a full Liquid Canister and a battery to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat.\n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer\'s effects on plants will vary depending on the respective proportions of its ingredients.\n\n- food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for" - .into(), - name: "Portable Composter".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::Battery }, SlotInfo { name : "Liquid Canister".into(), typ : - Class::LiquidCanister } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 2043318949i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "PortableSolarPanel".into(), - prefab_hash: 2043318949i32, - desc: "".into(), - name: "Portable Solar Panel".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 399661231i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "RailingElegant01".into(), - prefab_hash: 399661231i32, - desc: "".into(), - name: "Railing Elegant (Type 1)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1898247915i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "RailingElegant02".into(), - prefab_hash: -1898247915i32, - desc: "".into(), - name: "Railing Elegant (Type 2)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2072792175i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "RailingIndustrial02".into(), - prefab_hash: -2072792175i32, - desc: "".into(), - name: "Railing Industrial (Type 2)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 980054869i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ReagentColorBlue".into(), - prefab_hash: 980054869i32, - desc: "".into(), - name: "Color Dye (Blue)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some( - vec![("ColorBlue".into(), 10f64)].into_iter().collect(), - ), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 120807542i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ReagentColorGreen".into(), - prefab_hash: 120807542i32, - desc: "".into(), - name: "Color Dye (Green)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some( - vec![("ColorGreen".into(), 10f64)].into_iter().collect(), - ), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -400696159i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ReagentColorOrange".into(), - prefab_hash: -400696159i32, - desc: "".into(), - name: "Color Dye (Orange)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some( - vec![("ColorOrange".into(), 10f64)].into_iter().collect(), - ), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1998377961i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ReagentColorRed".into(), - prefab_hash: 1998377961i32, - desc: "".into(), - name: "Color Dye (Red)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some( - vec![("ColorRed".into(), 10f64)].into_iter().collect(), - ), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 635208006i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ReagentColorYellow".into(), - prefab_hash: 635208006i32, - desc: "".into(), - name: "Color Dye (Yellow)".into(), - }, - item: ItemInfo { - consumable: true, - filter_type: None, - ingredient: true, - max_quantity: 100u32, - reagents: Some( - vec![("ColorYellow".into(), 10f64)].into_iter().collect(), - ), - slot_class: Class::None, - sorting_class: SortingClass::Resources, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -788672929i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "RespawnPoint".into(), - prefab_hash: -788672929i32, - desc: "Place a respawn point to set a player entry point to your base when loading in, or returning from the dead." - .into(), - name: "Respawn Point".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -491247370i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "RespawnPointWallMounted".into(), - prefab_hash: -491247370i32, - desc: "".into(), - name: "Respawn Point (Mounted)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 434786784i32, - ItemCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "Robot".into(), - prefab_hash: 434786784i32, - desc: "Designed by - presumably drunk - Norsec roboticists, AIMeE (or Automated Independent Mechanical Entity) can be a Stationeer\'s best friend, or tiresome nemesis, or both several times in the same day. \n \nIntended to unearth and retrieve ores automatically, the unit requires basic programming knowledge to operate, and IC Editor Motherboard.\n\nAIMEe has 7 modes:\n\nRobotMode.None = 0 = Do nothing\nRobotMode.None = 1 = Follow nearest player\nRobotMode.None = 2 = Move to target in straight line\nRobotMode.None = 3 = Wander around looking for ores in 15 co-ords radius\nRobotMode.None = 4 = Unload in chute input or chute bin within 3 meters / 1.5 large grids\nRobotMode.None = 5 = Path(find) to target\nRobotMode.None = 6 = Automatic assigned state, shows when storage slots are fullConnects to Logic Transmitter" - .into(), - name: "AIMeE Bot".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::PressureExternal, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::TemperatureExternal, MemoryAccess::Read), - (LogicType::PositionX, MemoryAccess::Read), - (LogicType::PositionY, MemoryAccess::Read), - (LogicType::PositionZ, MemoryAccess::Read), - (LogicType::VelocityMagnitude, MemoryAccess::Read), - (LogicType::VelocityRelativeX, MemoryAccess::Read), - (LogicType::VelocityRelativeY, MemoryAccess::Read), - (LogicType::VelocityRelativeZ, MemoryAccess::Read), - (LogicType::TargetX, MemoryAccess::Write), (LogicType::TargetY, - MemoryAccess::Write), (LogicType::TargetZ, MemoryAccess::Write), - (LogicType::MineablesInVicinity, MemoryAccess::Read), - (LogicType::MineablesInQueue, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::ForwardX, MemoryAccess::Read), (LogicType::ForwardY, - MemoryAccess::Read), (LogicType::ForwardZ, MemoryAccess::Read), - (LogicType::Orientation, MemoryAccess::Read), - (LogicType::VelocityX, MemoryAccess::Read), - (LogicType::VelocityY, MemoryAccess::Read), - (LogicType::VelocityZ, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "None".into()), (1u32, "Follow".into()), (2u32, - "MoveToTarget".into()), (3u32, "Roam".into()), (4u32, - "Unload".into()), (5u32, "PathToTarget".into()), (6u32, - "StorageFull".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: true, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Programmable Chip".into(), typ : Class::ProgrammableChip }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, - SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : - "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ - : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 350726273i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "RoverCargo".into(), - prefab_hash: 350726273i32, - desc: "Connects to Logic Transmitter" - .into(), - name: "Rover (Cargo)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.01f32, - radiation_factor: 0.01f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::FilterType, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::FilterType, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::FilterType, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (15u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), (LogicType::TotalMoles, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: true, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Entity".into(), typ : Class::Entity }, SlotInfo { - name : "Entity".into(), typ : Class::Entity }, SlotInfo { name : - "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name : - "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name : - "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name : - "Gas Canister".into(), typ : Class::GasCanister }, SlotInfo { name : - "Gas Canister".into(), typ : Class::GasCanister }, SlotInfo { name : - "Gas Canister".into(), typ : Class::GasCanister }, SlotInfo { name : - "Gas Canister".into(), typ : Class::GasCanister }, SlotInfo { name : - "Battery".into(), typ : Class::Battery }, SlotInfo { name : "Battery" - .into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), - typ : Class::Battery }, SlotInfo { name : "Container Slot".into(), - typ : Class::None }, SlotInfo { name : "Container Slot".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : - Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -2049946335i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "Rover_MkI".into(), - prefab_hash: -2049946335i32, - desc: "A distant cousin of the jeep, the Mk I {Sinotai electric rover is one of the most simple and durable light vehicles in the known universe. Able to carry two passengers and cargo such as the Portable Gas Tank (Air) or , it is powered by up to three batteries, accepting everything including Battery Cell (Nuclear).\nA quad-array of hub-mounted electric engines propels the reinforced aluminium frame over most terrain and modest obstacles. While the Mk I is designed for stability in low-horizontality circumstances, if it rolls, try using your Crowbar to put it right way up.Connects to Logic Transmitter" - .into(), - name: "Rover MkI".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), (LogicType::TotalMoles, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: true, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Entity".into(), typ : Class::Entity }, SlotInfo { - name : "Entity".into(), typ : Class::Entity }, SlotInfo { name : - "Battery".into(), typ : Class::Battery }, SlotInfo { name : "Battery" - .into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), - typ : Class::Battery }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { - name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), - typ : Class::None }, SlotInfo { name : "" - .into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 861674123i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "Rover_MkI_build_states".into(), - prefab_hash: 861674123i32, - desc: "".into(), - name: "Rover MKI".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -256607540i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SMGMagazine".into(), - prefab_hash: -256607540i32, - desc: "".into(), - name: "SMG Magazine".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Magazine, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1139887531i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Cocoa".into(), - prefab_hash: 1139887531i32, - desc: "".into(), - name: "Cocoa Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1290755415i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Corn".into(), - prefab_hash: -1290755415i32, - desc: "Grow a Corn." - .into(), - name: "Corn Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1990600883i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Fern".into(), - prefab_hash: -1990600883i32, - desc: "Grow a Fern." - .into(), - name: "Fern Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 311593418i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Mushroom".into(), - prefab_hash: 311593418i32, - desc: "Grow a Mushroom." - .into(), - name: "Mushroom Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1005571172i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Potato".into(), - prefab_hash: 1005571172i32, - desc: "Grow a Potato." - .into(), - name: "Potato Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1423199840i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Pumpkin".into(), - prefab_hash: 1423199840i32, - desc: "Grow a Pumpkin." - .into(), - name: "Pumpkin Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1691151239i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Rice".into(), - prefab_hash: -1691151239i32, - desc: "Grow some Rice." - .into(), - name: "Rice Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1783004244i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Soybean".into(), - prefab_hash: 1783004244i32, - desc: "Grow some Soybean." - .into(), - name: "Soybean Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1884103228i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_SugarCane".into(), - prefab_hash: -1884103228i32, - desc: "".into(), - name: "Sugarcane Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 488360169i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Switchgrass".into(), - prefab_hash: 488360169i32, - desc: "".into(), - name: "Switchgrass Seed".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1922066841i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Tomato".into(), - prefab_hash: -1922066841i32, - desc: "Grow a Tomato." - .into(), - name: "Tomato Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -654756733i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "SeedBag_Wheet".into(), - prefab_hash: -654756733i32, - desc: "Grow some Wheat." - .into(), - name: "Wheat Seeds".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 10u32, - reagents: None, - slot_class: Class::Plant, - sorting_class: SortingClass::Food, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1991297271i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "SpaceShuttle".into(), - prefab_hash: -1991297271i32, - desc: "An antiquated Sinotai transport craft, long since decommissioned." - .into(), - name: "Space Shuttle".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Captain\'s Seat".into(), typ : Class::Entity }, - SlotInfo { name : "Passenger Seat Left".into(), typ : Class::Entity - }, SlotInfo { name : "Passenger Seat Right".into(), typ : - Class::Entity } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1527229051i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StopWatch".into(), - prefab_hash: -1527229051i32, - desc: "".into(), - name: "Stop Watch".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Time, MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1298920475i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAccessBridge".into(), - prefab_hash: 1298920475i32, - desc: "Extendable bridge that spans three grids".into(), - name: "Access Bridge".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1129453144i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureActiveVent".into(), - prefab_hash: -1129453144i32, - desc: "The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: \'Outward\' sets it to pump gas into a space until pressure is reached; \'Inward\' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward ..." - .into(), - name: "Active Vent".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::PressureExternal, MemoryAccess::ReadWrite), - (LogicType::PressureInternal, MemoryAccess::ReadWrite), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Outward".into()), (1u32, "Inward".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 446212963i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAdvancedComposter".into(), - prefab_hash: 446212963i32, - desc: "The advanced composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires Water and power to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat. \n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer\'s effects on plants will vary depending on the respective proportions of its ingredients.\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for up to five times\n" - .into(), - name: "Advanced Composter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 545937711i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAdvancedFurnace".into(), - prefab_hash: 545937711i32, - desc: "The advanced furnace comes with integrated inlet and outlet pumps for controlling the unit\'s internal pressure." - .into(), - name: "Advanced Furnace".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RecipeHash, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::SettingInput, MemoryAccess::ReadWrite), - (LogicType::SettingOutput, MemoryAccess::ReadWrite), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: true, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - } - .into(), - ), - ( - -463037670i32, - StructureLogicDeviceConsumerMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAdvancedPackagingMachine".into(), - prefab_hash: -463037670i32, - desc: "The Xigo Advanced Cannifier Multi-Plus Pro is an automateable packaging machine that uses Empty Cans and cooked food to create canned sustenance that does not decay. Note that the ACMPP only accepts cooked food and tin cans." - .into(), - name: "Advanced Packaging Machine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RecipeHash, MemoryAccess::ReadWrite), - (LogicType::CompletionRatio, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemCookedCondensedMilk".into(), "ItemCookedCorn".into(), - "ItemCookedMushroom".into(), "ItemCookedPowderedEggs".into(), - "ItemCookedPumpkin".into(), "ItemCookedRice".into(), - "ItemCookedSoybean".into(), "ItemCookedTomato".into(), - "ItemEmptyCan".into(), "ItemMilk".into(), "ItemPotatoBaked" - .into(), "ItemSoyOil".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - fabricator_info: Some(FabricatorInfo { - tier: MachineTier::Undefined, - recipes: vec![ - ("ItemCannedCondensedMilk".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Milk".into(), 200f64), ("Steel".into(), 1f64)] - .into_iter().collect() }), ("ItemCannedEdamame".into(), Recipe { - tier : MachineTier::TierOne, time : 5f64, energy : 0f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Oil".into(), 1f64), ("Soy".into(), 15f64), ("Steel" - .into(), 1f64)] .into_iter().collect() }), ("ItemCannedMushroom" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 0f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Mushroom".into(), 8f64), ("Oil".into(), - 1f64), ("Steel".into(), 1f64)] .into_iter().collect() }), - ("ItemCannedPowderedEggs".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Egg".into(), 5f64), ("Oil".into(), 1f64), ("Steel".into(), - 1f64)] .into_iter().collect() }), ("ItemCannedRicePudding" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 0f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Oil".into(), 1f64), ("Rice".into(), - 5f64), ("Steel".into(), 1f64)] .into_iter().collect() }), - ("ItemCornSoup".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 0f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Corn".into(), - 5f64), ("Oil".into(), 1f64), ("Steel".into(), 1f64)] .into_iter() - .collect() }), ("ItemFrenchFries".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Oil".into(), 1f64), ("Potato".into(), 1f64), ("Steel" - .into(), 1f64)] .into_iter().collect() }), ("ItemPumpkinSoup" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 0f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Oil".into(), 1f64), ("Pumpkin".into(), - 5f64), ("Steel".into(), 1f64)] .into_iter().collect() }), - ("ItemTomatoSoup".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 0f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Oil".into(), - 1f64), ("Steel".into(), 1f64), ("Tomato".into(), 5f64)] - .into_iter().collect() }) - ] - .into_iter() - .collect(), - }), - memory: MemoryInfo { - instructions: Some( - vec![ - ("DeviceSetLock".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" - .into(), typ : "PrinterInstruction".into(), value : 6i64 }), - ("EjectAllReagents".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 8i64 }), - ("EjectReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "PrinterInstruction".into(), value : 7i64 }), - ("ExecuteRecipe".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 2i64 }), - ("JumpIfNextInvalid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 4i64 }), - ("JumpToAddress".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 5i64 }), - ("MissingRecipeReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 9i64 }), - ("StackPointer".into(), Instruction { description : - "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 1i64 }), - ("WaitUntilNextValid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 3i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::ReadWrite, - memory_size: 64u32, - }, - } - .into(), - ), - ( - -2087593337i32, - StructureCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAirConditioner".into(), - prefab_hash: -2087593337i32, - desc: "Built using the Kit (Atmospherics), the ExMin-designed air conditioner is used to raise or lower input gas temperature.\n\t \nThe unit has three pipe connections: input, output, and waste. Gas fed into the input will be heated or cooled to reach the target temperature, while the opposite will happen to gas on the waste network.\n\nMultiple Efficiency Multipliers can effect the amount of energy the Air Conditioner uses, and these can be view on the unit\'s green Information Panel. As the temperature difference between input and waste increases, the Temperature Differential Efficiency Multiplier will decrease. If input or waste temperature is extremely hot or cold, the Operational Temperature Efficiency will decrease. If the input or waste pipe has approach low pressures, the Pressure Efficiency will decrease.\n\nPipe Convection Radiators may be useful in bringing extreme pipe temperatures back towards normal world temperatures. \n \nFor more information on using the air conditioner, consult the temperature control Guides page." - .into(), - name: "Air Conditioner".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::PressureInput, MemoryAccess::Read), - (LogicType::TemperatureInput, MemoryAccess::Read), - (LogicType::RatioOxygenInput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioNitrogenInput, MemoryAccess::Read), - (LogicType::RatioPollutantInput, MemoryAccess::Read), - (LogicType::RatioVolatilesInput, MemoryAccess::Read), - (LogicType::RatioWaterInput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), - (LogicType::TotalMolesInput, MemoryAccess::Read), - (LogicType::PressureOutput, MemoryAccess::Read), - (LogicType::TemperatureOutput, MemoryAccess::Read), - (LogicType::RatioOxygenOutput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioPollutantOutput, MemoryAccess::Read), - (LogicType::RatioVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioWaterOutput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), - (LogicType::TotalMolesOutput, MemoryAccess::Read), - (LogicType::PressureOutput2, MemoryAccess::Read), - (LogicType::TemperatureOutput2, MemoryAccess::Read), - (LogicType::RatioOxygenOutput2, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideOutput2, MemoryAccess::Read), - (LogicType::RatioNitrogenOutput2, MemoryAccess::Read), - (LogicType::RatioPollutantOutput2, MemoryAccess::Read), - (LogicType::RatioVolatilesOutput2, MemoryAccess::Read), - (LogicType::RatioWaterOutput2, MemoryAccess::Read), - (LogicType::RatioNitrousOxideOutput2, MemoryAccess::Read), - (LogicType::TotalMolesOutput2, MemoryAccess::Read), - (LogicType::CombustionInput, MemoryAccess::Read), - (LogicType::CombustionOutput, MemoryAccess::Read), - (LogicType::CombustionOutput2, MemoryAccess::Read), - (LogicType::OperationalTemperatureEfficiency, - MemoryAccess::Read), - (LogicType::TemperatureDifferentialEfficiency, - MemoryAccess::Read), (LogicType::PressureEfficiency, - MemoryAccess::Read), (LogicType::RatioLiquidNitrogenInput, - MemoryAccess::Read), (LogicType::RatioLiquidNitrogenOutput, - MemoryAccess::Read), (LogicType::RatioLiquidNitrogenOutput2, - MemoryAccess::Read), (LogicType::RatioLiquidOxygenInput, - MemoryAccess::Read), (LogicType::RatioLiquidOxygenOutput, - MemoryAccess::Read), (LogicType::RatioLiquidOxygenOutput2, - MemoryAccess::Read), (LogicType::RatioLiquidVolatilesInput, - MemoryAccess::Read), (LogicType::RatioLiquidVolatilesOutput, - MemoryAccess::Read), (LogicType::RatioLiquidVolatilesOutput2, - MemoryAccess::Read), (LogicType::RatioSteamInput, - MemoryAccess::Read), (LogicType::RatioSteamOutput, - MemoryAccess::Read), (LogicType::RatioSteamOutput2, - MemoryAccess::Read), (LogicType::RatioLiquidCarbonDioxideInput, - MemoryAccess::Read), (LogicType::RatioLiquidCarbonDioxideOutput, - MemoryAccess::Read), (LogicType::RatioLiquidCarbonDioxideOutput2, - MemoryAccess::Read), (LogicType::RatioLiquidPollutantInput, - MemoryAccess::Read), (LogicType::RatioLiquidPollutantOutput, - MemoryAccess::Read), (LogicType::RatioLiquidPollutantOutput2, - MemoryAccess::Read), (LogicType::RatioLiquidNitrousOxideInput, - MemoryAccess::Read), (LogicType::RatioLiquidNitrousOxideOutput, - MemoryAccess::Read), (LogicType::RatioLiquidNitrousOxideOutput2, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Programmable Chip".into(), typ : - Class::ProgrammableChip } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Waste }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: Some(2u32), - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -2105052344i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAirlock".into(), - prefab_hash: -2105052344i32, - desc: "The standard airlock is a powered portal that forms the main component of an airlock chamber. As long as the airlock is not locked, it can be manually opened using a crowbar." - .into(), - name: "Airlock".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1736080881i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAirlockGate".into(), - prefab_hash: 1736080881i32, - desc: "1 x 1 modular door piece for building hangar doors.".into(), - name: "Small Hangar Door".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1811979158i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAngledBench".into(), - prefab_hash: 1811979158i32, - desc: "".into(), - name: "Bench (Angled)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -247344692i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureArcFurnace".into(), - prefab_hash: -247344692i32, - desc: "The simplest smelting system available to the average Stationeer, Recurso\'s arc furnace was forged itself in the depths of the Solar System to help explorational geologists determine the purity of potential asteroidal mining targets.\nCo-opted by the ODA, it now provides Stationeers with a way to produce pure ingots of various resources.\nThe smelting process also releases a range of by product gases, principally Nitrogen, Carbon Dioxide, Volatiles and Oxygen in differing ratios. These can be recaptured from the atmosphere by filtering, but also make the arc furnace a risk in closed environments. \nUnlike the more advanced Furnace, the arc furnace cannot create alloys." - .into(), - name: "Arc Furnace".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, - MemoryAccess::Read), (LogicType::RecipeHash, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::Ore }, SlotInfo { - name : "Export".into(), typ : Class::Ingot } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: true, - }, - } - .into(), - ), - ( - 1999523701i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAreaPowerControl".into(), - prefab_hash: 1999523701i32, - desc: "An Area Power Control (APC) has three main functions: \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network.\nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only." - .into(), - name: "Area Power Control".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, - MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), - (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PowerPotential, MemoryAccess::Read), - (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32, - "Discharging".into()), (3u32, "Charging".into()), (4u32, - "Charged".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Data Disk".into(), typ : Class::DataDisk } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1032513487i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAreaPowerControlReversed".into(), - prefab_hash: -1032513487i32, - desc: "An Area Power Control (APC) has three main functions. \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network. \nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only." - .into(), - name: "Area Power Control".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, - MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), - (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PowerPotential, MemoryAccess::Read), - (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32, - "Discharging".into()), (3u32, "Charging".into()), (4u32, - "Charged".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Data Disk".into(), typ : Class::DataDisk } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 7274344i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAutoMinerSmall".into(), - prefab_hash: 7274344i32, - desc: "The Recurso SquareDig autominer is a structure that when built will mine a vertical 2x2 shaft until it hits bedrock. The autominer can be connected to a chute system, and is controllable by a logic network. Note that the autominer outputs more ore than a conventional Mining Drill over the same area." - .into(), - name: "Autominer (Small)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 336213101i32, - StructureLogicDeviceConsumerMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAutolathe".into(), - prefab_hash: 336213101i32, - desc: "The foundation of most Stationeer fabrication systems, the ExMin autolathe is a multi-axis molecular compositional system. Its complexity demands considerable time to assemble, but it remains an indispensable creation tool. Upgrade the device using a Autolathe Printer Mod for additional recipes and faster processing speeds.\n\t " - .into(), - name: "Autolathe".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RecipeHash, MemoryAccess::ReadWrite), - (LogicType::CompletionRatio, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), - "ItemCopperIngot".into(), "ItemElectrumIngot".into(), - "ItemGoldIngot".into(), "ItemHastelloyIngot".into(), - "ItemInconelIngot".into(), "ItemInvarIngot".into(), - "ItemIronIngot".into(), "ItemLeadIngot".into(), "ItemNickelIngot" - .into(), "ItemSiliconIngot".into(), "ItemSilverIngot".into(), - "ItemSolderIngot".into(), "ItemSolidFuel".into(), - "ItemSteelIngot".into(), "ItemStelliteIngot".into(), - "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - fabricator_info: Some(FabricatorInfo { - tier: MachineTier::Undefined, - recipes: vec![ - ("CardboardBox".into(), Recipe { tier : MachineTier::TierOne, - time : 2f64, energy : 120f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Silicon" - .into(), 2f64)] .into_iter().collect() }), ("ItemCableCoil" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 200f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Copper".into(), 0.5f64)] .into_iter() - .collect() }), ("ItemCoffeeMug".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 70f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemEggCarton".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 100f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Silicon" - .into(), 2f64)] .into_iter().collect() }), ("ItemEmptyCan" - .into(), Recipe { tier : MachineTier::TierOne, time : 1f64, - energy : 70f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Steel".into(), 1f64)] .into_iter() - .collect() }), ("ItemEvaSuit".into(), Recipe { tier : - MachineTier::TierOne, time : 15f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 5f64)] .into_iter() - .collect() }), ("ItemGlassSheets".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 2f64)] .into_iter().collect() }), - ("ItemIronFrames".into(), Recipe { tier : MachineTier::TierOne, - time : 4f64, energy : 200f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 4f64)] .into_iter().collect() }), ("ItemIronSheets".into(), - Recipe { tier : MachineTier::TierOne, time : 1f64, energy : - 200f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 1f64)] .into_iter() - .collect() }), ("ItemKitAccessBridge".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 15000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Solder".into(), 2f64), ("Steel" - .into(), 10f64)] .into_iter().collect() }), ("ItemKitArcFurnace" - .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, - energy : 6000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron".into(), - 20f64)] .into_iter().collect() }), ("ItemKitAutolathe".into(), - Recipe { tier : MachineTier::TierOne, time : 180f64, energy : - 36000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold".into(), - 2f64), ("Iron".into(), 20f64)] .into_iter().collect() }), - ("ItemKitBeds".into(), Recipe { tier : MachineTier::TierOne, time - : 10f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 5f64), ("Iron".into(), 20f64)] .into_iter().collect() - }), ("ItemKitBlastDoor".into(), Recipe { tier : - MachineTier::TierTwo, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 3f64), ("Steel".into(), 15f64)] - .into_iter().collect() }), ("ItemKitCentrifuge".into(), Recipe { - tier : MachineTier::TierOne, time : 60f64, energy : 18000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 20f64)] - .into_iter().collect() }), ("ItemKitChairs".into(), Recipe { tier - : MachineTier::TierOne, time : 10f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 20f64)] - .into_iter().collect() }), ("ItemKitChute".into(), Recipe { tier - : MachineTier::TierOne, time : 5f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemKitCompositeCladding".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 200f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemKitCompositeFloorGrating".into(), Recipe { tier : - MachineTier::TierOne, time : 3f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemKitCrate".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 200f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 10f64)] .into_iter().collect() }), ("ItemKitCrateMkII".into(), - Recipe { tier : MachineTier::TierTwo, time : 10f64, energy : - 200f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Gold".into(), 5f64), ("Iron".into(), - 10f64)] .into_iter().collect() }), ("ItemKitCrateMount".into(), - Recipe { tier : MachineTier::TierOne, time : 10f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 10f64)] .into_iter() - .collect() }), ("ItemKitDeepMiner".into(), Recipe { tier : - MachineTier::TierTwo, time : 180f64, energy : 72000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Constantan".into(), 5f64), ("Electrum".into(), 5f64), - ("Invar".into(), 10f64), ("Steel".into(), 50f64)] .into_iter() - .collect() }), ("ItemKitDoor".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 3f64), ("Iron".into(), 7f64)] .into_iter() - .collect() }), ("ItemKitElectronicsPrinter".into(), Recipe { tier - : MachineTier::TierOne, time : 120f64, energy : 12000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 2f64), ("Iron" - .into(), 20f64)] .into_iter().collect() }), ("ItemKitFlagODA" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 100f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 8f64)] .into_iter() - .collect() }), ("ItemKitFurnace".into(), Recipe { tier : - MachineTier::TierOne, time : 120f64, energy : 12000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 10f64), ("Iron".into(), 30f64)] - .into_iter().collect() }), ("ItemKitFurniture".into(), Recipe { - tier : MachineTier::TierOne, time : 10f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 20f64)] - .into_iter().collect() }), ("ItemKitHydraulicPipeBender".into(), - Recipe { tier : MachineTier::TierOne, time : 180f64, energy : - 18000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold".into(), - 2f64), ("Iron".into(), 20f64)] .into_iter().collect() }), - ("ItemKitInteriorDoors".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 3f64), ("Iron".into(), 5f64)] .into_iter() - .collect() }), ("ItemKitLadder".into(), Recipe { tier : - MachineTier::TierOne, time : 3f64, energy : 200f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 2f64)] .into_iter().collect() }), - ("ItemKitLocker".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 5f64)] .into_iter().collect() }), ("ItemKitPipe".into(), Recipe { - tier : MachineTier::TierOne, time : 5f64, energy : 200f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 0.5f64)] .into_iter().collect() }), - ("ItemKitRailing".into(), Recipe { tier : MachineTier::TierOne, - time : 1f64, energy : 100f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 1f64)] .into_iter().collect() }), ("ItemKitRecycler".into(), - Recipe { tier : MachineTier::TierOne, time : 60f64, energy : - 12000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 10f64), ("Iron".into(), - 20f64)] .into_iter().collect() }), ("ItemKitReinforcedWindows" - .into(), Recipe { tier : MachineTier::TierOne, time : 7f64, - energy : 700f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Steel".into(), 2f64)] .into_iter() - .collect() }), ("ItemKitRespawnPointWallMounted".into(), Recipe { - tier : MachineTier::TierOne, time : 20f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 1f64), ("Iron".into(), 3f64)] .into_iter() - .collect() }), ("ItemKitRocketManufactory".into(), Recipe { tier - : MachineTier::TierOne, time : 120f64, energy : 12000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 2f64), ("Iron" - .into(), 20f64)] .into_iter().collect() }), ("ItemKitSDBHopper" - .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, - energy : 700f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 15f64)] .into_iter() - .collect() }), ("ItemKitSecurityPrinter".into(), Recipe { tier : - MachineTier::TierOne, time : 180f64, energy : 36000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 20f64), ("Gold".into(), 20f64), ("Steel" - .into(), 20f64)] .into_iter().collect() }), ("ItemKitSign" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 100f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 3f64)] .into_iter() - .collect() }), ("ItemKitSorter".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 1f64), ("Iron" - .into(), 10f64)] .into_iter().collect() }), ("ItemKitStacker" - .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron".into(), - 10f64)] .into_iter().collect() }), ("ItemKitStairs".into(), - Recipe { tier : MachineTier::TierOne, time : 20f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 15f64)] .into_iter() - .collect() }), ("ItemKitStairwell".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 6000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 15f64)] .into_iter().collect() }), - ("ItemKitStandardChute".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 2f64), ("Electrum".into(), 2f64), - ("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemKitTables".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 5f64), ("Iron".into(), 20f64)] .into_iter().collect() - }), ("ItemKitToolManufactory".into(), Recipe { tier : - MachineTier::TierOne, time : 120f64, energy : 24000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 10f64), ("Iron".into(), 20f64)] - .into_iter().collect() }), ("ItemKitWall".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Steel".into(), 1f64)] .into_iter().collect() }), - ("ItemKitWallArch".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Steel" - .into(), 1f64)] .into_iter().collect() }), ("ItemKitWallFlat" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Steel".into(), 1f64)] .into_iter() - .collect() }), ("ItemKitWallGeometry".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Steel".into(), 1f64)] .into_iter().collect() }), - ("ItemKitWallIron".into(), Recipe { tier : MachineTier::TierOne, - time : 1f64, energy : 200f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 1f64)] .into_iter().collect() }), ("ItemKitWallPadded".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Steel".into(), 1f64)] .into_iter() - .collect() }), ("ItemKitWindowShutter".into(), Recipe { tier : - MachineTier::TierOne, time : 7f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Iron".into(), 1f64), ("Steel".into(), 2f64)] .into_iter() - .collect() }), ("ItemPlasticSheets".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 200f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 0.5f64)] .into_iter().collect() }), - ("ItemSpaceHelmet".into(), Recipe { tier : MachineTier::TierOne, - time : 15f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 2f64), ("Gold".into(), 2f64)] .into_iter().collect() }), - ("ItemSteelFrames".into(), Recipe { tier : MachineTier::TierOne, - time : 7f64, energy : 800f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Steel" - .into(), 2f64)] .into_iter().collect() }), ("ItemSteelSheets" - .into(), Recipe { tier : MachineTier::TierOne, time : 3f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Steel".into(), 0.5f64)] .into_iter() - .collect() }), ("ItemStelliteGlassSheets".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Silicon".into(), 2f64), ("Stellite".into(), 1f64)] - .into_iter().collect() }), ("ItemWallLight".into(), Recipe { tier - : MachineTier::TierOne, time : 10f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Iron".into(), 1f64), ("Silicon" - .into(), 1f64)] .into_iter().collect() }), ("KitSDBSilo".into(), - Recipe { tier : MachineTier::TierOne, time : 120f64, energy : - 24000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold".into(), - 20f64), ("Steel".into(), 15f64)] .into_iter().collect() }), - ("KitStructureCombustionCentrifuge".into(), Recipe { tier : - MachineTier::TierTwo, time : 120f64, energy : 24000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 5f64), ("Invar".into(), 10f64), - ("Steel".into(), 20f64)] .into_iter().collect() }) - ] - .into_iter() - .collect(), - }), - memory: MemoryInfo { - instructions: Some( - vec![ - ("DeviceSetLock".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" - .into(), typ : "PrinterInstruction".into(), value : 6i64 }), - ("EjectAllReagents".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 8i64 }), - ("EjectReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "PrinterInstruction".into(), value : 7i64 }), - ("ExecuteRecipe".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 2i64 }), - ("JumpIfNextInvalid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 4i64 }), - ("JumpToAddress".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 5i64 }), - ("MissingRecipeReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 9i64 }), - ("StackPointer".into(), Instruction { description : - "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 1i64 }), - ("WaitUntilNextValid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 3i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::ReadWrite, - memory_size: 64u32, - }, - } - .into(), - ), - ( - -1672404896i32, - StructureLogicDeviceConsumerMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureAutomatedOven".into(), - prefab_hash: -1672404896i32, - desc: "".into(), - name: "Automated Oven".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RecipeHash, MemoryAccess::ReadWrite), - (LogicType::CompletionRatio, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemCorn".into(), "ItemEgg".into(), "ItemFertilizedEgg".into(), - "ItemFlour".into(), "ItemMilk".into(), "ItemMushroom".into(), - "ItemPotato".into(), "ItemPumpkin".into(), "ItemRice".into(), - "ItemSoybean".into(), "ItemSoyOil".into(), "ItemTomato".into(), - "ItemSugarCane".into(), "ItemCocoaTree".into(), "ItemCocoaPowder" - .into(), "ItemSugar".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - fabricator_info: Some(FabricatorInfo { - tier: MachineTier::TierOne, - recipes: vec![ - ("ItemBreadLoaf".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 0f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Flour" - .into(), 200f64), ("Oil".into(), 5f64)] .into_iter().collect() - }), ("ItemCerealBar".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Flour".into(), 50f64)] .into_iter().collect() }), - ("ItemChocolateBar".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 0f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Cocoa" - .into(), 2f64), ("Sugar".into(), 10f64)] .into_iter().collect() - }), ("ItemChocolateCake".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 0f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 5i64, reagents : - vec![("Cocoa".into(), 2f64), ("Egg".into(), 1f64), ("Flour" - .into(), 50f64), ("Milk".into(), 5f64), ("Sugar".into(), 50f64)] - .into_iter().collect() }), ("ItemChocolateCerealBar".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Cocoa".into(), 1f64), ("Flour".into(), 50f64)] - .into_iter().collect() }), ("ItemCookedCondensedMilk".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Milk".into(), 100f64)] .into_iter().collect() }), - ("ItemCookedCorn".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 0f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Corn".into(), - 1f64)] .into_iter().collect() }), ("ItemCookedMushroom".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Mushroom".into(), 1f64)] .into_iter().collect() }), - ("ItemCookedPowderedEggs".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Egg".into(), 4f64)] .into_iter().collect() }), - ("ItemCookedPumpkin".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Pumpkin".into(), 1f64)] .into_iter().collect() }), - ("ItemCookedRice".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 0f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Rice".into(), - 3f64)] .into_iter().collect() }), ("ItemCookedSoybean".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Soy".into(), 5f64)] .into_iter().collect() }), - ("ItemCookedTomato".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 0f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Tomato" - .into(), 1f64)] .into_iter().collect() }), ("ItemFries".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Oil".into(), 5f64), ("Potato".into(), 1f64)] .into_iter() - .collect() }), ("ItemMuffin".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Egg".into(), 1f64), ("Flour".into(), 50f64), ("Milk" - .into(), 10f64)] .into_iter().collect() }), ("ItemPlainCake" - .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, - energy : 0f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 4i64, reagents : vec![("Egg".into(), 1f64), ("Flour".into(), - 50f64), ("Milk".into(), 5f64), ("Sugar".into(), 50f64)] - .into_iter().collect() }), ("ItemPotatoBaked".into(), Recipe { - tier : MachineTier::TierOne, time : 5f64, energy : 0f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Potato".into(), 1f64)] .into_iter().collect() }), - ("ItemPumpkinPie".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 0f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 4i64, reagents : vec![("Egg".into(), - 1f64), ("Flour".into(), 100f64), ("Milk".into(), 10f64), - ("Pumpkin".into(), 10f64)] .into_iter().collect() }) - ] - .into_iter() - .collect(), - }), - memory: MemoryInfo { - instructions: Some( - vec![ - ("DeviceSetLock".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" - .into(), typ : "PrinterInstruction".into(), value : 6i64 }), - ("EjectAllReagents".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 8i64 }), - ("EjectReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "PrinterInstruction".into(), value : 7i64 }), - ("ExecuteRecipe".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 2i64 }), - ("JumpIfNextInvalid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 4i64 }), - ("JumpToAddress".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 5i64 }), - ("MissingRecipeReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 9i64 }), - ("StackPointer".into(), Instruction { description : - "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 1i64 }), - ("WaitUntilNextValid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 3i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::ReadWrite, - memory_size: 64u32, - }, - } - .into(), - ), - ( - 2099900163i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBackLiquidPressureRegulator".into(), - prefab_hash: 2099900163i32, - desc: "Regulates the volume ratio of liquid in the input Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty." - .into(), - name: "Liquid Back Volume Regulator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1149857558i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBackPressureRegulator".into(), - prefab_hash: -1149857558i32, - desc: "Unlike the Pressure Regulator, which closes when the input exceeds a given pressure, the back pressure regulator opens when input pressure reaches a given value." - .into(), - name: "Back Pressure Regulator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1613497288i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBasketHoop".into(), - prefab_hash: -1613497288i32, - desc: "".into(), - name: "Basket Hoop".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -400115994i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBattery".into(), - prefab_hash: -400115994i32, - desc: "Providing large-scale, reliable power storage, the Sinotai \'Dianzi\' station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: \'Dianzi cooks, but it also frys.\' \nPOWER OUTPUT\nAble to store up to 3600000W of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large)." - .into(), - name: "Station Battery".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, - MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), - (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PowerPotential, MemoryAccess::Read), - (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1945930022i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBatteryCharger".into(), - prefab_hash: 1945930022i32, - desc: "The 5-slot Xigo battery charger fits the Battery Cell (Small), Battery Cell (Large) and Battery Cell (Nuclear), providing up to 500W to any connected cell. Note: the older design means this device has minor power draw (10W) even when not charging." - .into(), - name: "Battery Cell Charger".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Battery".into(), typ : Class::Battery }, SlotInfo { name : - "Battery".into(), typ : Class::Battery }, SlotInfo { name : "Battery" - .into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), - typ : Class::Battery } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -761772413i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBatteryChargerSmall".into(), - prefab_hash: -761772413i32, - desc: "".into(), - name: "Battery Charger Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo - { name : "Battery".into(), typ : Class::Battery } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1388288459i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBatteryLarge".into(), - prefab_hash: -1388288459i32, - desc: "Providing even better large-scale, reliable power storage than the {THING;StructureBattery}, the Sinotai \'Da Dianchi\' large station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: \'Dianzi cooks, but it also frys.\' \nPOWER OUTPUT\nAble to store up to 9000001 watts of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large). " - .into(), - name: "Station Battery (Large)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, - MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), - (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PowerPotential, MemoryAccess::Read), - (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1125305264i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBatteryMedium".into(), - prefab_hash: -1125305264i32, - desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" - .into(), - name: "Battery (Medium)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::Read), (LogicType::Charge, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PowerPotential, - MemoryAccess::Read), (LogicType::PowerActual, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2123455080i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBatterySmall".into(), - prefab_hash: -2123455080i32, - desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" - .into(), - name: "Auxiliary Rocket Battery ".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::Read), (LogicType::Charge, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PowerPotential, - MemoryAccess::Read), (LogicType::PowerActual, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, - "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" - .into()), (5u32, "High".into()), (6u32, "Full".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -188177083i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBeacon".into(), - prefab_hash: -188177083i32, - desc: "".into(), - name: "Beacon".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::Color, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: true, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2042448192i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBench".into(), - prefab_hash: -2042448192i32, - desc: "When it\'s time to sit, nothing supports you like a bench. This bench is powered, so you can use appliances like the Microwave." - .into(), - name: "Powered Bench".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, - SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 406745009i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBench1".into(), - prefab_hash: 406745009i32, - desc: "".into(), - name: "Bench (Counter Style)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, - SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2127086069i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBench2".into(), - prefab_hash: -2127086069i32, - desc: "".into(), - name: "Bench (High Tech Style)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, - SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -164622691i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBench3".into(), - prefab_hash: -164622691i32, - desc: "".into(), - name: "Bench (Frame Style)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, - SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1750375230i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBench4".into(), - prefab_hash: 1750375230i32, - desc: "".into(), - name: "Bench (Workbench Style)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, - SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 337416191i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBlastDoor".into(), - prefab_hash: 337416191i32, - desc: "Airtight and almost undamageable, the original \'Millmar\' series of blast door was designed by off-world mining giant Recurso to protect asteroid-mining facilities from nuclear-incident-level explosive decompression.\nShort of a pocket-sized singularity blinking into the local space-time frame, there is effectively no limit to the pressure these blast doors can contain - ideal for constructing airlocks in pressure-sensitive environments." - .into(), - name: "Blast Door".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 697908419i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBlockBed".into(), - prefab_hash: 697908419i32, - desc: "Description coming.".into(), - name: "Block Bed".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 378084505i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureBlocker".into(), - prefab_hash: 378084505i32, - desc: "".into(), - name: "Blocker".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1036015121i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableAnalysizer".into(), - prefab_hash: 1036015121i32, - desc: "".into(), - name: "Cable Analyzer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PowerPotential, MemoryAccess::Read), - (LogicType::PowerActual, MemoryAccess::Read), - (LogicType::PowerRequired, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -889269388i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCorner".into(), - prefab_hash: -889269388i32, - desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." - .into(), - name: "Cable (Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 980469101i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCorner3".into(), - prefab_hash: 980469101i32, - desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." - .into(), - name: "Cable (3-Way Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 318437449i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCorner3Burnt".into(), - prefab_hash: 318437449i32, - desc: "".into(), - name: "Burnt Cable (3-Way Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2393826i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCorner3HBurnt".into(), - prefab_hash: 2393826i32, - desc: "".into(), - name: "".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1542172466i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCorner4".into(), - prefab_hash: -1542172466i32, - desc: "".into(), - name: "Cable (4-Way Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 268421361i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCorner4Burnt".into(), - prefab_hash: 268421361i32, - desc: "".into(), - name: "Burnt Cable (4-Way Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -981223316i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCorner4HBurnt".into(), - prefab_hash: -981223316i32, - desc: "".into(), - name: "Burnt Heavy Cable (4-Way Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -177220914i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCornerBurnt".into(), - prefab_hash: -177220914i32, - desc: "".into(), - name: "Burnt Cable (Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -39359015i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCornerH".into(), - prefab_hash: -39359015i32, - desc: "".into(), - name: "Heavy Cable (Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1843379322i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCornerH3".into(), - prefab_hash: -1843379322i32, - desc: "".into(), - name: "Heavy Cable (3-Way Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 205837861i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCornerH4".into(), - prefab_hash: 205837861i32, - desc: "".into(), - name: "Heavy Cable (4-Way Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1931412811i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableCornerHBurnt".into(), - prefab_hash: 1931412811i32, - desc: "".into(), - name: "Burnt Cable (Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 281380789i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableFuse100k".into(), - prefab_hash: 281380789i32, - desc: "".into(), - name: "Fuse (100kW)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1103727120i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableFuse1k".into(), - prefab_hash: -1103727120i32, - desc: "".into(), - name: "Fuse (1kW)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -349716617i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableFuse50k".into(), - prefab_hash: -349716617i32, - desc: "".into(), - name: "Fuse (50kW)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -631590668i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableFuse5k".into(), - prefab_hash: -631590668i32, - desc: "".into(), - name: "Fuse (5kW)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -175342021i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunction".into(), - prefab_hash: -175342021i32, - desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." - .into(), - name: "Cable (Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1112047202i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunction4".into(), - prefab_hash: 1112047202i32, - desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." - .into(), - name: "Cable (4-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1756896811i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunction4Burnt".into(), - prefab_hash: -1756896811i32, - desc: "".into(), - name: "Burnt Cable (4-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -115809132i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunction4HBurnt".into(), - prefab_hash: -115809132i32, - desc: "".into(), - name: "Burnt Cable (4-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 894390004i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunction5".into(), - prefab_hash: 894390004i32, - desc: "".into(), - name: "Cable (5-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1545286256i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunction5Burnt".into(), - prefab_hash: 1545286256i32, - desc: "".into(), - name: "Burnt Cable (5-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1404690610i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunction6".into(), - prefab_hash: -1404690610i32, - desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer duty - so much so, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." - .into(), - name: "Cable (6-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -628145954i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunction6Burnt".into(), - prefab_hash: -628145954i32, - desc: "".into(), - name: "Burnt Cable (6-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1854404029i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunction6HBurnt".into(), - prefab_hash: 1854404029i32, - desc: "".into(), - name: "Burnt Cable (6-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1620686196i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunctionBurnt".into(), - prefab_hash: -1620686196i32, - desc: "".into(), - name: "Burnt Cable (Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 469451637i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunctionH".into(), - prefab_hash: 469451637i32, - desc: "".into(), - name: "Heavy Cable (3-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -742234680i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunctionH4".into(), - prefab_hash: -742234680i32, - desc: "".into(), - name: "Heavy Cable (4-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1530571426i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunctionH5".into(), - prefab_hash: -1530571426i32, - desc: "".into(), - name: "Heavy Cable (5-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1701593300i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunctionH5Burnt".into(), - prefab_hash: 1701593300i32, - desc: "".into(), - name: "Burnt Heavy Cable (5-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1036780772i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunctionH6".into(), - prefab_hash: 1036780772i32, - desc: "".into(), - name: "Heavy Cable (6-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -341365649i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableJunctionHBurnt".into(), - prefab_hash: -341365649i32, - desc: "".into(), - name: "Burnt Cable (Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 605357050i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableStraight".into(), - prefab_hash: 605357050i32, - desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official \'tool\'.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." - .into(), - name: "Cable (Straight)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1196981113i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableStraightBurnt".into(), - prefab_hash: -1196981113i32, - desc: "".into(), - name: "Burnt Cable (Straight)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -146200530i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableStraightH".into(), - prefab_hash: -146200530i32, - desc: "".into(), - name: "Heavy Cable (Straight)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2085762089i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCableStraightHBurnt".into(), - prefab_hash: 2085762089i32, - desc: "".into(), - name: "Burnt Cable (Straight)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -342072665i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCamera".into(), - prefab_hash: -342072665i32, - desc: "Nothing says \'I care\' like a security camera that\'s been linked a Motion Sensor and a Console fitted with a Camera Display.\nBe there, even when you\'re not." - .into(), - name: "Camera".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1385712131i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCapsuleTankGas".into(), - prefab_hash: -1385712131i32, - desc: "".into(), - name: "Gas Capsule Tank Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1415396263i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCapsuleTankLiquid".into(), - prefab_hash: 1415396263i32, - desc: "".into(), - name: "Liquid Capsule Tank Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1151864003i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCargoStorageMedium".into(), - prefab_hash: 1151864003i32, - desc: "".into(), - name: "Cargo Storage (Medium)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![] - .into_iter().collect()), (4u32, vec![] .into_iter().collect()), - (5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter() - .collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![] - .into_iter().collect()), (9u32, vec![] .into_iter().collect()), - (10u32, vec![] .into_iter().collect()), (11u32, vec![] - .into_iter().collect()), (12u32, vec![] .into_iter().collect()), - (13u32, vec![] .into_iter().collect()), (14u32, vec![] - .into_iter().collect()), (15u32, vec![] .into_iter().collect()), - (16u32, vec![] .into_iter().collect()), (17u32, vec![] - .into_iter().collect()), (18u32, vec![] .into_iter().collect()), - (19u32, vec![] .into_iter().collect()), (20u32, vec![] - .into_iter().collect()), (21u32, vec![] .into_iter().collect()), - (22u32, vec![] .into_iter().collect()), (23u32, vec![] - .into_iter().collect()), (24u32, vec![] .into_iter().collect()), - (25u32, vec![] .into_iter().collect()), (26u32, vec![] - .into_iter().collect()), (27u32, vec![] .into_iter().collect()), - (28u32, vec![] .into_iter().collect()), (29u32, vec![] - .into_iter().collect()), (30u32, vec![] .into_iter().collect()), - (31u32, vec![] .into_iter().collect()), (32u32, vec![] - .into_iter().collect()), (33u32, vec![] .into_iter().collect()), - (34u32, vec![] .into_iter().collect()), (35u32, vec![] - .into_iter().collect()), (36u32, vec![] .into_iter().collect()), - (37u32, vec![] .into_iter().collect()), (38u32, vec![] - .into_iter().collect()), (39u32, vec![] .into_iter().collect()), - (40u32, vec![] .into_iter().collect()), (41u32, vec![] - .into_iter().collect()), (42u32, vec![] .into_iter().collect()), - (43u32, vec![] .into_iter().collect()), (44u32, vec![] - .into_iter().collect()), (45u32, vec![] .into_iter().collect()), - (46u32, vec![] .into_iter().collect()), (47u32, vec![] - .into_iter().collect()), (48u32, vec![] .into_iter().collect()), - (49u32, vec![] .into_iter().collect()), (50u32, vec![] - .into_iter().collect()), (51u32, vec![] .into_iter().collect()), - (52u32, vec![] .into_iter().collect()), (53u32, vec![] - .into_iter().collect()), (54u32, vec![] .into_iter().collect()), - (55u32, vec![] .into_iter().collect()), (56u32, vec![] - .into_iter().collect()), (57u32, vec![] .into_iter().collect()), - (58u32, vec![] .into_iter().collect()), (59u32, vec![] - .into_iter().collect()), (60u32, vec![] .into_iter().collect()), - (61u32, vec![] .into_iter().collect()), (62u32, vec![] - .into_iter().collect()), (63u32, vec![] .into_iter().collect()), - (64u32, vec![] .into_iter().collect()), (65u32, vec![] - .into_iter().collect()), (66u32, vec![] .into_iter().collect()), - (67u32, vec![] .into_iter().collect()), (68u32, vec![] - .into_iter().collect()), (69u32, vec![] .into_iter().collect()), - (70u32, vec![] .into_iter().collect()), (71u32, vec![] - .into_iter().collect()), (72u32, vec![] .into_iter().collect()), - (73u32, vec![] .into_iter().collect()), (74u32, vec![] - .into_iter().collect()), (75u32, vec![] .into_iter().collect()), - (76u32, vec![] .into_iter().collect()), (77u32, vec![] - .into_iter().collect()), (78u32, vec![] .into_iter().collect()), - (79u32, vec![] .into_iter().collect()), (80u32, vec![] - .into_iter().collect()), (81u32, vec![] .into_iter().collect()), - (82u32, vec![] .into_iter().collect()), (83u32, vec![] - .into_iter().collect()), (84u32, vec![] .into_iter().collect()), - (85u32, vec![] .into_iter().collect()), (86u32, vec![] - .into_iter().collect()), (87u32, vec![] .into_iter().collect()), - (88u32, vec![] .into_iter().collect()), (89u32, vec![] - .into_iter().collect()), (90u32, vec![] .into_iter().collect()), - (91u32, vec![] .into_iter().collect()), (92u32, vec![] - .into_iter().collect()), (93u32, vec![] .into_iter().collect()), - (94u32, vec![] .into_iter().collect()), (95u32, vec![] - .into_iter().collect()), (96u32, vec![] .into_iter().collect()), - (97u32, vec![] .into_iter().collect()), (98u32, vec![] - .into_iter().collect()), (99u32, vec![] .into_iter().collect()), - (100u32, vec![] .into_iter().collect()), (101u32, vec![] - .into_iter().collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1493672123i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCargoStorageSmall".into(), - prefab_hash: -1493672123i32, - desc: "".into(), - name: "Cargo Storage (Small)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (15u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (16u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (17u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (18u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (19u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (20u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (21u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (22u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (23u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (24u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (25u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (26u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (27u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (28u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (29u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (30u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (31u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (32u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (33u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (34u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (35u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (36u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (37u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (38u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (39u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (40u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (41u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (42u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (43u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (44u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (45u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (46u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (47u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (48u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (49u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (50u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (51u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 690945935i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCentrifuge".into(), - prefab_hash: 690945935i32, - desc: "If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore. \n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. \n Its bigger brother Combustion Centrifuge can be used to process items significantly faster. Items processed by the centrifuge will be de-gassed. \n If openned while powered on, the centrifuge will enter an errored state and reduce its rpm to 0 and then export any items." - .into(), - name: "Centrifuge".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Reagents, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - } - .into(), - ), - ( - 1167659360i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChair".into(), - prefab_hash: 1167659360i32, - desc: "One of the universe\'s many chairs, optimized for bipeds with somewhere between zero and two upper limbs." - .into(), - name: "Chair".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1944858936i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChairBacklessDouble".into(), - prefab_hash: 1944858936i32, - desc: "".into(), - name: "Chair (Backless Double)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1672275150i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChairBacklessSingle".into(), - prefab_hash: 1672275150i32, - desc: "".into(), - name: "Chair (Backless Single)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -367720198i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChairBoothCornerLeft".into(), - prefab_hash: -367720198i32, - desc: "".into(), - name: "Chair (Booth Corner Left)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1640720378i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChairBoothMiddle".into(), - prefab_hash: 1640720378i32, - desc: "".into(), - name: "Chair (Booth Middle)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1152812099i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChairRectangleDouble".into(), - prefab_hash: -1152812099i32, - desc: "".into(), - name: "Chair (Rectangle Double)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1425428917i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChairRectangleSingle".into(), - prefab_hash: -1425428917i32, - desc: "".into(), - name: "Chair (Rectangle Single)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1245724402i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChairThickDouble".into(), - prefab_hash: -1245724402i32, - desc: "".into(), - name: "Chair (Thick Double)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1510009608i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChairThickSingle".into(), - prefab_hash: -1510009608i32, - desc: "".into(), - name: "Chair (Thick Single)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -850484480i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteBin".into(), - prefab_hash: -850484480i32, - desc: "The Stationeer\'s goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nLike most Recurso-designed systems, chute bins are simple and robust powered items, allowing items to be manually passed into chute networks by pulling a lever. They can also be programmed with logic to operate automatically, although full automation requires the use items such as a SDB Hopper." - .into(), - name: "Chute Bin".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Input".into(), typ : Class::None }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1360330136i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteCorner".into(), - prefab_hash: 1360330136i32, - desc: "Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute corners are fundamental components of chute networks, which allow the transport of items between machines with import/export slots, such as the Furnace and other automatable structures." - .into(), - name: "Chute (Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -810874728i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteDigitalFlipFlopSplitterLeft".into(), - prefab_hash: -810874728i32, - desc: "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output." - .into(), - name: "Chute Digital Flip Flop Splitter Left".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Quantity, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::SettingOutput, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output2 }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 163728359i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteDigitalFlipFlopSplitterRight".into(), - prefab_hash: 163728359i32, - desc: "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output." - .into(), - name: "Chute Digital Flip Flop Splitter Right".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Quantity, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::SettingOutput, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output2 }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 648608238i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteDigitalValveLeft".into(), - prefab_hash: 648608238i32, - desc: "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial." - .into(), - name: "Chute Digital Valve Left".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Quantity, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1337091041i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteDigitalValveRight".into(), - prefab_hash: -1337091041i32, - desc: "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial." - .into(), - name: "Chute Digital Valve Right".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Quantity, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1446854725i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteFlipFlopSplitter".into(), - prefab_hash: -1446854725i32, - desc: "A chute that toggles between two outputs".into(), - name: "Chute Flip Flop Splitter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1469588766i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteInlet".into(), - prefab_hash: -1469588766i32, - desc: "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute inlet is an aperture by which items can be introduced to import/export networks. Note that its origins in zero-gravity mining means chute inlets are unpowered and permanently open, rather than interactable, allowing objects to be thrown in. They can be connected to logic systems to monitor throughput." - .into(), - name: "Chute Inlet".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -611232514i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteJunction".into(), - prefab_hash: -611232514i32, - desc: "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute junctions are fundamental components of chute networks, allowing merging or splitting of these networks. When combined with a programmed Sorter, items can be sent down different paths to various machines with import/export slots." - .into(), - name: "Chute (Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1022714809i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteOutlet".into(), - prefab_hash: -1022714809i32, - desc: "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute outlet is an aperture for exiting items from import/export networks. Note that the outlet\'s origins in zero-gravity mining means they are permanently open, rather than interactable, but can be connected to logic systems to monitor throughput." - .into(), - name: "Chute Outlet".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 225377225i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteOverflow".into(), - prefab_hash: 225377225i32, - desc: "The overflow chute will direct materials to its overflow port when the thing connected to its default port is already occupied." - .into(), - name: "Chute Overflow".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 168307007i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteStraight".into(), - prefab_hash: 168307007i32, - desc: "Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChutes are fundamental components of chute networks, which allow the transport of items between any machine or device with an import/export slot." - .into(), - name: "Chute (Straight)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1918892177i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteUmbilicalFemale".into(), - prefab_hash: -1918892177i32, - desc: "".into(), - name: "Umbilical Socket (Chute)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -659093969i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteUmbilicalFemaleSide".into(), - prefab_hash: -659093969i32, - desc: "".into(), - name: "Umbilical Socket Angle (Chute)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -958884053i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteUmbilicalMale".into(), - prefab_hash: -958884053i32, - desc: "0.Left\n1.Center\n2.Right".into(), - name: "Umbilical (Chute)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), - (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Left".into()), (1u32, "Center".into()), (2u32, - "Right".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 434875271i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteValve".into(), - prefab_hash: 434875271i32, - desc: "The Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute." - .into(), - name: "Chute Valve".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -607241919i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureChuteWindow".into(), - prefab_hash: -607241919i32, - desc: "Chute\'s with windows let you see what\'s passing through your import/export network. But be warned, they are not insulated as other chutes are. Ices will melt." - .into(), - name: "Chute (Window)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Transport Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -128473777i32, - StructureCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCircuitHousing".into(), - prefab_hash: -128473777i32, - desc: "".into(), - name: "IC Housing".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::LineNumber, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::LineNumber, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Programmable Chip".into(), typ : - Class::ProgrammableChip } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: Some(6u32), - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1238905683i32, - StructureCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCombustionCentrifuge".into(), - prefab_hash: 1238905683i32, - desc: "The Combustion Centrifuge is a gas powered version of the Centrifuge. If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore.\n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. A combustible fuel mix should be supplied to the gas input, and waste gasses should be vented from the output. \n The machine\'s RPMs must be controlled via the throttle and combustion limiter levers. If the Combustion Centrifuge gains, or loses, RPMs too fast it will experience stress, and eventually grind to a halt. Higher RPMs directly result in faster processing speeds. \n The throttle lever controls the amount of fuel being pulled into the machine, increasing the temperature inside the engine, and leading to an increase in RPM. The limiter lever influences the speed of the combustion, and how much uncombusted gas is in the exhaust. \n Ejecting ore from the Combustion Centrifuge while it is at high RPMs will result in additional stress build up. If turned off while not stressed, the machine will automatically start to brake, and reduce RPMs in a controlled manner.\n\t " - .into(), - name: "Combustion Centrifuge".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.001f32, - radiation_factor: 0.001f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()), (2u32, vec![] .into_iter().collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::PressureInput, MemoryAccess::Read), - (LogicType::TemperatureInput, MemoryAccess::Read), - (LogicType::RatioOxygenInput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioNitrogenInput, MemoryAccess::Read), - (LogicType::RatioPollutantInput, MemoryAccess::Read), - (LogicType::RatioVolatilesInput, MemoryAccess::Read), - (LogicType::RatioWaterInput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), - (LogicType::TotalMolesInput, MemoryAccess::Read), - (LogicType::PressureOutput, MemoryAccess::Read), - (LogicType::TemperatureOutput, MemoryAccess::Read), - (LogicType::RatioOxygenOutput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioPollutantOutput, MemoryAccess::Read), - (LogicType::RatioVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioWaterOutput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), - (LogicType::TotalMolesOutput, MemoryAccess::Read), - (LogicType::CombustionInput, MemoryAccess::Read), - (LogicType::CombustionOutput, MemoryAccess::Read), - (LogicType::CombustionLimiter, MemoryAccess::ReadWrite), - (LogicType::Throttle, MemoryAccess::ReadWrite), (LogicType::Rpm, - MemoryAccess::Read), (LogicType::Stress, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioSteamInput, MemoryAccess::Read), - (LogicType::RatioSteamOutput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : - "Programmable Chip".into(), typ : Class::ProgrammableChip } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: Some(2u32), - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - } - .into(), - ), - ( - -1513030150i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingAngled".into(), - prefab_hash: -1513030150i32, - desc: "".into(), - name: "Composite Cladding (Angled)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -69685069i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingAngledCorner".into(), - prefab_hash: -69685069i32, - desc: "".into(), - name: "Composite Cladding (Angled Corner)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1841871763i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingAngledCornerInner".into(), - prefab_hash: -1841871763i32, - desc: "".into(), - name: "Composite Cladding (Angled Corner Inner)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1417912632i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingAngledCornerInnerLong" - .into(), - prefab_hash: -1417912632i32, - desc: "".into(), - name: "Composite Cladding (Angled Corner Inner Long)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 947705066i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingAngledCornerInnerLongL" - .into(), - prefab_hash: 947705066i32, - desc: "".into(), - name: "Composite Cladding (Angled Corner Inner Long L)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1032590967i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingAngledCornerInnerLongR" - .into(), - prefab_hash: -1032590967i32, - desc: "".into(), - name: "Composite Cladding (Angled Corner Inner Long R)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 850558385i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingAngledCornerLong".into(), - prefab_hash: 850558385i32, - desc: "".into(), - name: "Composite Cladding (Long Angled Corner)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -348918222i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingAngledCornerLongR".into(), - prefab_hash: -348918222i32, - desc: "".into(), - name: "Composite Cladding (Long Angled Mirrored Corner)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -387546514i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingAngledLong".into(), - prefab_hash: -387546514i32, - desc: "".into(), - name: "Composite Cladding (Long Angled)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 212919006i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingCylindrical".into(), - prefab_hash: 212919006i32, - desc: "".into(), - name: "Composite Cladding (Cylindrical)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1077151132i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingCylindricalPanel".into(), - prefab_hash: 1077151132i32, - desc: "".into(), - name: "Composite Cladding (Cylindrical Panel)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1997436771i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingPanel".into(), - prefab_hash: 1997436771i32, - desc: "".into(), - name: "Composite Cladding (Panel)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -259357734i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingRounded".into(), - prefab_hash: -259357734i32, - desc: "".into(), - name: "Composite Cladding (Rounded)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1951525046i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingRoundedCorner".into(), - prefab_hash: 1951525046i32, - desc: "".into(), - name: "Composite Cladding (Rounded Corner)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 110184667i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingRoundedCornerInner".into(), - prefab_hash: 110184667i32, - desc: "".into(), - name: "Composite Cladding (Rounded Corner Inner)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 139107321i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingSpherical".into(), - prefab_hash: 139107321i32, - desc: "".into(), - name: "Composite Cladding (Spherical)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 534213209i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingSphericalCap".into(), - prefab_hash: 534213209i32, - desc: "".into(), - name: "Composite Cladding (Spherical Cap)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1751355139i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeCladdingSphericalCorner".into(), - prefab_hash: 1751355139i32, - desc: "".into(), - name: "Composite Cladding (Spherical Corner)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -793837322i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeDoor".into(), - prefab_hash: -793837322i32, - desc: "Recurso\'s composite doors are rated to 300kPa, which is more than sufficient for most purposes they were designed for. However, steep pressure differentials are not your friend." - .into(), - name: "Composite Door".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 324868581i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeFloorGrating".into(), - prefab_hash: 324868581i32, - desc: "While aesthetics rank low on the ladder of Stationeer concerns, composite gratings allow the concealment of unsightly cables on floors, walls and ceilings." - .into(), - name: "Composite Floor Grating".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -895027741i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeFloorGrating2".into(), - prefab_hash: -895027741i32, - desc: "".into(), - name: "Composite Floor Grating (Type 2)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1113471627i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeFloorGrating3".into(), - prefab_hash: -1113471627i32, - desc: "".into(), - name: "Composite Floor Grating (Type 3)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 600133846i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeFloorGrating4".into(), - prefab_hash: 600133846i32, - desc: "".into(), - name: "Composite Floor Grating (Type 4)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2109695912i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeFloorGratingOpen".into(), - prefab_hash: 2109695912i32, - desc: "".into(), - name: "Composite Floor Grating Open".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 882307910i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeFloorGratingOpenRotated".into(), - prefab_hash: 882307910i32, - desc: "".into(), - name: "Composite Floor Grating Open Rotated".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1237302061i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeWall".into(), - prefab_hash: 1237302061i32, - desc: "Air-tight and resistant to extreme temperatures, composite walls favor form over function, coming in a range of slightly different, functionally identical varieties." - .into(), - name: "Composite Wall (Type 1)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 718343384i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeWall02".into(), - prefab_hash: 718343384i32, - desc: "".into(), - name: "Composite Wall (Type 2)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1574321230i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeWall03".into(), - prefab_hash: 1574321230i32, - desc: "".into(), - name: "Composite Wall (Type 3)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1011701267i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeWall04".into(), - prefab_hash: -1011701267i32, - desc: "".into(), - name: "Composite Wall (Type 4)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2060571986i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeWindow".into(), - prefab_hash: -2060571986i32, - desc: "Air-tight and resistant to extreme temperatures, composite walls come in several charming, near identical varieties - reflecting their designer\'s focus on form over function." - .into(), - name: "Composite Window".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -688284639i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCompositeWindowIron".into(), - prefab_hash: -688284639i32, - desc: "".into(), - name: "Iron Window".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -626563514i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureComputer".into(), - prefab_hash: -626563514i32, - desc: "In some ways a relic, the \'Chonk R1\' was designed by severely conflicted Norsec technicians, who needed a unit that could operate with a wide range of motherboards, while also enduring the worst a new Cadet could throw at it.\nThe result is a machine described by some as \'the only PC likely to survive our collision with a black hole\', while other, less appreciative users regard it as sharing most of its technological DNA with a cheese grater.\nCompatible motherboards:\n- Logic Motherboard\n- Manufacturing Motherboard\n- Sorter Motherboard\n- Communications Motherboard\n- IC Editor Motherboard" - .into(), - name: "Computer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()), (2u32, vec![] .into_iter().collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk }, - SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk }, - SlotInfo { name : "Motherboard".into(), typ : Class::Motherboard } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1420719315i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCondensationChamber".into(), - prefab_hash: 1420719315i32, - desc: "A device for safely condensing gasses into liquids. Liquids and Gasses will both exist safely inside the device. The Chamber will pressurise using its in-built pressure regulator to the target set by the setting wheel.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Condensation Chamber.\n Paired with Evaporation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner." - .into(), - name: "Condensation Chamber".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.001f32, - radiation_factor: 0.000050000002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input2 }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -965741795i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCondensationValve".into(), - prefab_hash: -965741795i32, - desc: "Allows for the removal of any liquids from a gas pipe into a liquid pipe. Only allows liquids to pass in one direction." - .into(), - name: "Condensation Valve".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 235638270i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureConsole".into(), - prefab_hash: 235638270i32, - desc: "This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed." - .into(), - name: "Console".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard - }, SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -722284333i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureConsoleDual".into(), - prefab_hash: -722284333i32, - desc: "This Norsec-designed control box manages devices such as the Active Vent, Gas Sensor, Composite Door and others, depending on which circuitboard is inserted into the unit. It has separate data and power ports.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed." - .into(), - name: "Console Dual".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard - }, SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -53151617i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureConsoleLED1x2".into(), - prefab_hash: -53151617i32, - desc: "0.Default\n1.Percent\n2.Power".into(), - name: "LED Display (Medium)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, - "Power".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: true, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1949054743i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureConsoleLED1x3".into(), - prefab_hash: -1949054743i32, - desc: "0.Default\n1.Percent\n2.Power".into(), - name: "LED Display (Large)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, - "Power".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: true, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -815193061i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureConsoleLED5".into(), - prefab_hash: -815193061i32, - desc: "0.Default\n1.Percent\n2.Power".into(), - name: "LED Display (Small)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, - "Power".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: true, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 801677497i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureConsoleMonitor".into(), - prefab_hash: 801677497i32, - desc: "This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor, Security Camera and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port, and a charming sloped interface.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed." - .into(), - name: "Console Monitor".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard - }, SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1961153710i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureControlChair".into(), - prefab_hash: -1961153710i32, - desc: "Once, these chairs were the heart of space-going behemoths. Now, they\'re items of nostalgia built only by a handful of Stationeers with a sense of history. In other words, kitsch." - .into(), - name: "Control Chair".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::PositionX, MemoryAccess::Read), - (LogicType::PositionY, MemoryAccess::Read), - (LogicType::PositionZ, MemoryAccess::Read), - (LogicType::VelocityMagnitude, MemoryAccess::Read), - (LogicType::VelocityRelativeX, MemoryAccess::Read), - (LogicType::VelocityRelativeY, MemoryAccess::Read), - (LogicType::VelocityRelativeZ, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Entity".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1968255729i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCornerLocker".into(), - prefab_hash: -1968255729i32, - desc: "".into(), - name: "Corner Locker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -733500083i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCrateMount".into(), - prefab_hash: -733500083i32, - desc: "".into(), - name: "Container Mount".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Container Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1938254586i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCryoTube".into(), - prefab_hash: 1938254586i32, - desc: "The exact operation of the Longsleep cryotube remains a commercial secret, with Norsec merely licensing the design. Able to regenerate organ damage when supplied with power and an atmosphere, the Longsleep is a minor miracle of modern medical technology." - .into(), - name: "CryoTube".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::EntityState, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1443059329i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCryoTubeHorizontal".into(), - prefab_hash: 1443059329i32, - desc: "The horizontal variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C." - .into(), - name: "Cryo Tube Horizontal".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.005f32, - radiation_factor: 0.005f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::EntityState, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1381321828i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureCryoTubeVertical".into(), - prefab_hash: -1381321828i32, - desc: "The vertical variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C." - .into(), - name: "Cryo Tube Vertical".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.005f32, - radiation_factor: 0.005f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::EntityState, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1076425094i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureDaylightSensor".into(), - prefab_hash: 1076425094i32, - desc: "Daylight sensors provide data on whether the current region of your base is in sunlight, and report the exact solar angle. Note that the orientation of the sensor alters the reported solar angle, while Logic systems can be used to offset it." - .into(), - name: "Daylight Sensor".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Horizontal, - MemoryAccess::Read), (LogicType::Vertical, MemoryAccess::Read), - (LogicType::SolarAngle, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::SolarIrradiance, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Default".into()), (1u32, "Horizontal".into()), (2u32, - "Vertical".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 265720906i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureDeepMiner".into(), - prefab_hash: 265720906i32, - desc: "Drills through terrain until it hits bedrock. Once inside bedrock Dirty Ore is produced roughly every 90s" - .into(), - name: "Deep Miner".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1280984102i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureDigitalValve".into(), - prefab_hash: -1280984102i32, - desc: "The digital valve allows Stationeers to create logic-controlled valves and pipe networks." - .into(), - name: "Digital Valve".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1944485013i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureDiode".into(), - prefab_hash: 1944485013i32, - desc: "".into(), - name: "LED".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: true, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 576516101i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureDiodeSlide".into(), - prefab_hash: 576516101i32, - desc: "".into(), - name: "Diode Slide".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -137465079i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureDockPortSide".into(), - prefab_hash: -137465079i32, - desc: "".into(), - name: "Dock (Port Side)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1968371847i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureDrinkingFountain".into(), - prefab_hash: 1968371847i32, - desc: "".into(), - name: "".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1668992663i32, - StructureCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "StructureElectrolyzer".into(), - prefab_hash: -1668992663i32, - desc: "The Norsec-designed Electrolyzer splits Water into hydrogen and Oxygen. Employing unknown proprietary technology, the device uses water\'s latent heat as the energy to drive the electrosis process. If there is a downside to this near-miraculous fission, it\'s that the device is limited by the quantity of power available, which is used to maintain the temperature output. In other words, the machine works best with hot gas." - .into(), - name: "Electrolyzer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::PressureInput, MemoryAccess::Read), - (LogicType::TemperatureInput, MemoryAccess::Read), - (LogicType::RatioOxygenInput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioNitrogenInput, MemoryAccess::Read), - (LogicType::RatioPollutantInput, MemoryAccess::Read), - (LogicType::RatioVolatilesInput, MemoryAccess::Read), - (LogicType::RatioWaterInput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), - (LogicType::TotalMolesInput, MemoryAccess::Read), - (LogicType::PressureOutput, MemoryAccess::Read), - (LogicType::TemperatureOutput, MemoryAccess::Read), - (LogicType::RatioOxygenOutput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioPollutantOutput, MemoryAccess::Read), - (LogicType::RatioVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioWaterOutput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), - (LogicType::TotalMolesOutput, MemoryAccess::Read), - (LogicType::CombustionInput, MemoryAccess::Read), - (LogicType::CombustionOutput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioSteamInput, MemoryAccess::Read), - (LogicType::RatioSteamOutput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Programmable Chip".into(), typ : - Class::ProgrammableChip } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: Some(2u32), - has_activate_state: true, - has_atmosphere: true, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1307165496i32, - StructureLogicDeviceConsumerMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureElectronicsPrinter".into(), - prefab_hash: 1307165496i32, - desc: "The electronic printer will create any electronic part you need. From circuit boards and electronic devices to solar panels. The choice is yours. Upgrade the device using a Electronic Printer Mod for additional recipes and faster processing speeds." - .into(), - name: "Electronics Printer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RecipeHash, MemoryAccess::ReadWrite), - (LogicType::CompletionRatio, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), - "ItemCopperIngot".into(), "ItemElectrumIngot".into(), - "ItemGoldIngot".into(), "ItemHastelloyIngot".into(), - "ItemInconelIngot".into(), "ItemInvarIngot".into(), - "ItemIronIngot".into(), "ItemLeadIngot".into(), "ItemNickelIngot" - .into(), "ItemSiliconIngot".into(), "ItemSilverIngot".into(), - "ItemSolderIngot".into(), "ItemSolidFuel".into(), - "ItemSteelIngot".into(), "ItemStelliteIngot".into(), - "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - fabricator_info: Some(FabricatorInfo { - tier: MachineTier::Undefined, - recipes: vec![ - ("ApplianceChemistryStation".into(), Recipe { tier : - MachineTier::TierOne, time : 45f64, energy : 1500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 1f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), - ("ApplianceDeskLampLeft".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Iron".into(), 2f64), ("Silicon".into(), 1f64)] - .into_iter().collect() }), ("ApplianceDeskLampRight".into(), - Recipe { tier : MachineTier::TierOne, time : 10f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Iron".into(), 2f64), ("Silicon".into(), - 1f64)] .into_iter().collect() }), ("ApplianceMicrowave".into(), - Recipe { tier : MachineTier::TierOne, time : 45f64, energy : - 1500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold".into(), - 1f64), ("Iron".into(), 5f64)] .into_iter().collect() }), - ("AppliancePackagingMachine".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 1f64), ("Iron" - .into(), 10f64)] .into_iter().collect() }), - ("AppliancePaintMixer".into(), Recipe { tier : - MachineTier::TierOne, time : 45f64, energy : 1500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 1f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), - ("AppliancePlantGeneticAnalyzer".into(), Recipe { tier : - MachineTier::TierOne, time : 45f64, energy : 4500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 1f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), - ("AppliancePlantGeneticSplicer".into(), Recipe { tier : - MachineTier::TierOne, time : 50f64, energy : 5000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Inconel".into(), 10f64), ("Stellite".into(), 20f64)] - .into_iter().collect() }), ("AppliancePlantGeneticStabilizer" - .into(), Recipe { tier : MachineTier::TierOne, time : 50f64, - energy : 5000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Inconel".into(), 10f64), ("Stellite" - .into(), 20f64)] .into_iter().collect() }), - ("ApplianceReagentProcessor".into(), Recipe { tier : - MachineTier::TierOne, time : 45f64, energy : 1500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 1f64), ("Iron" - .into(), 5f64)] .into_iter().collect() }), ("ApplianceTabletDock" - .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, - energy : 750f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 4i64, reagents : vec![("Copper".into(), 2f64), ("Gold".into(), - 1f64), ("Iron".into(), 5f64), ("Silicon".into(), 1f64)] - .into_iter().collect() }), ("AutolathePrinterMod".into(), Recipe - { tier : MachineTier::TierTwo, time : 180f64, energy : 72000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Constantan".into(), 8f64), ("Electrum".into(), 8f64), - ("Solder".into(), 8f64), ("Steel".into(), 35f64)] .into_iter() - .collect() }), ("Battery_Wireless_cell".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 10000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 2f64), ("Iron" - .into(), 2f64)] .into_iter().collect() }), - ("Battery_Wireless_cell_Big".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 20000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 15f64), ("Gold".into(), 5f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), - ("CartridgeAtmosAnalyser".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), - ("CartridgeConfiguration".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), - ("CartridgeElectronicReader".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), ("CartridgeGPS" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 100f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold".into(), - 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), - ("CartridgeMedicalAnalyser".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), - ("CartridgeNetworkAnalyser".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), ("CartridgeOreScanner" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 100f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold".into(), - 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), - ("CartridgeOreScannerColor".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Constantan".into(), 5f64), ("Electrum".into(), 5f64), - ("Invar".into(), 5f64), ("Silicon".into(), 5f64)] .into_iter() - .collect() }), ("CartridgePlantAnalyser".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), ("CartridgeTracker" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 100f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold".into(), - 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), - ("CircuitboardAdvAirlockControl".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), - ("CircuitboardAirControl".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("CircuitboardAirlockControl".into(), Recipe { - tier : MachineTier::TierOne, time : 5f64, energy : 100f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), - ("CircuitboardDoorControl".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("CircuitboardGasDisplay".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), - ("CircuitboardGraphDisplay".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("CircuitboardHashDisplay".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("CircuitboardModeControl".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("CircuitboardPowerControl".into(), Recipe { tier - : MachineTier::TierOne, time : 5f64, energy : 100f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("CircuitboardShipDisplay".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("CircuitboardSolarControl".into(), Recipe { tier - : MachineTier::TierOne, time : 5f64, energy : 100f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("DynamicLight".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 2f64), ("Iron".into(), 5f64)] .into_iter() - .collect() }), ("ElectronicPrinterMod".into(), Recipe { tier : - MachineTier::TierOne, time : 180f64, energy : 72000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Constantan".into(), 8f64), ("Electrum".into(), 8f64), - ("Solder".into(), 8f64), ("Steel".into(), 35f64)] .into_iter() - .collect() }), ("ItemAdvancedTablet".into(), Recipe { tier : - MachineTier::TierTwo, time : 60f64, energy : 12000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 6i64, reagents : - vec![("Copper".into(), 5.5f64), ("Electrum".into(), 1f64), - ("Gold".into(), 12f64), ("Iron".into(), 3f64), ("Solder".into(), - 5f64), ("Steel".into(), 2f64)] .into_iter().collect() }), - ("ItemAreaPowerControl".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 5000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Iron".into(), 5f64), ("Solder" - .into(), 3f64)] .into_iter().collect() }), ("ItemBatteryCell" - .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, - energy : 1000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold".into(), - 2f64), ("Iron".into(), 2f64)] .into_iter().collect() }), - ("ItemBatteryCellLarge".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 20000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 5f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), - ("ItemBatteryCellNuclear".into(), Recipe { tier : - MachineTier::TierTwo, time : 180f64, energy : 360000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Astroloy".into(), 10f64), ("Inconel".into(), 5f64), - ("Steel".into(), 5f64)] .into_iter().collect() }), - ("ItemBatteryCharger".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 10f64)] .into_iter().collect() }), - ("ItemBatteryChargerSmall".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 250f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64), ("Iron" - .into(), 5f64)] .into_iter().collect() }), ("ItemCableAnalyser" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 100f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 2f64), ("Iron".into(), - 1f64), ("Silicon".into(), 2f64)] .into_iter().collect() }), - ("ItemCableCoil".into(), Recipe { tier : MachineTier::TierOne, - time : 1f64, energy : 100f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Copper" - .into(), 0.5f64)] .into_iter().collect() }), - ("ItemCableCoilHeavy".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 0.5f64), ("Gold".into(), 0.5f64)] - .into_iter().collect() }), ("ItemCableFuse".into(), Recipe { tier - : MachineTier::TierOne, time : 5f64, energy : 100f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 5f64)] .into_iter() - .collect() }), ("ItemCreditCard".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 200f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 2f64), ("Silicon".into(), 5f64)] - .into_iter().collect() }), ("ItemDataDisk".into(), Recipe { tier - : MachineTier::TierOne, time : 5f64, energy : 100f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("ItemElectronicParts".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 10f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Gold".into(), 2f64), ("Iron" - .into(), 3f64)] .into_iter().collect() }), ("ItemFlashingLight" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 100f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 3f64), ("Iron".into(), - 2f64)] .into_iter().collect() }), ("ItemHEMDroidRepairKit" - .into(), Recipe { tier : MachineTier::TierTwo, time : 40f64, - energy : 1500f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Electrum".into(), 10f64), ("Inconel" - .into(), 5f64), ("Solder".into(), 5f64)] .into_iter().collect() - }), ("ItemIntegratedCircuit10".into(), Recipe { tier : - MachineTier::TierOne, time : 40f64, energy : 4000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Electrum".into(), 5f64), ("Gold".into(), 10f64), ("Solder" - .into(), 2f64), ("Steel".into(), 4f64)] .into_iter().collect() - }), ("ItemKitAIMeE".into(), Recipe { tier : MachineTier::TierTwo, - time : 25f64, energy : 2200f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 7i64, reagents : vec![("Astroloy" - .into(), 10f64), ("Constantan".into(), 8f64), ("Copper".into(), - 5f64), ("Electrum".into(), 15f64), ("Gold".into(), 5f64), - ("Invar".into(), 7f64), ("Steel".into(), 22f64)] .into_iter() - .collect() }), ("ItemKitAdvancedComposter".into(), Recipe { tier - : MachineTier::TierTwo, time : 55f64, energy : 20000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 15f64), ("Electrum".into(), 20f64), - ("Solder".into(), 5f64), ("Steel".into(), 30f64)] .into_iter() - .collect() }), ("ItemKitAdvancedFurnace".into(), Recipe { tier : - MachineTier::TierTwo, time : 180f64, energy : 36000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 6i64, reagents : - vec![("Copper".into(), 25f64), ("Electrum".into(), 15f64), - ("Gold".into(), 5f64), ("Silicon".into(), 6f64), ("Solder" - .into(), 8f64), ("Steel".into(), 30f64)] .into_iter().collect() - }), ("ItemKitAdvancedPackagingMachine".into(), Recipe { tier : - MachineTier::TierTwo, time : 60f64, energy : 18000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Constantan".into(), 10f64), ("Copper".into(), 10f64), - ("Electrum".into(), 15f64), ("Steel".into(), 20f64)] .into_iter() - .collect() }), ("ItemKitAutoMinerSmall".into(), Recipe { tier : - MachineTier::TierTwo, time : 90f64, energy : 9000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 5i64, reagents : - vec![("Copper".into(), 15f64), ("Electrum".into(), 50f64), - ("Invar".into(), 25f64), ("Iron".into(), 15f64), ("Steel".into(), - 100f64)] .into_iter().collect() }), ("ItemKitAutomatedOven" - .into(), Recipe { tier : MachineTier::TierTwo, time : 50f64, - energy : 15000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 5i64, reagents : vec![("Constantan".into(), 5f64), ("Copper" - .into(), 15f64), ("Gold".into(), 10f64), ("Solder".into(), - 10f64), ("Steel".into(), 25f64)] .into_iter().collect() }), - ("ItemKitBattery".into(), Recipe { tier : MachineTier::TierOne, - time : 120f64, energy : 12000f64, temperature : RecipeRange { - start : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 20f64), ("Gold".into(), 20f64), ("Steel".into(), 20f64)] - .into_iter().collect() }), ("ItemKitBatteryLarge".into(), Recipe - { tier : MachineTier::TierTwo, time : 240f64, energy : 96000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 6i64, reagents : - vec![("Copper".into(), 35f64), ("Electrum".into(), 10f64), - ("Gold".into(), 35f64), ("Silicon".into(), 5f64), ("Steel" - .into(), 35f64), ("Stellite".into(), 2f64)] .into_iter() - .collect() }), ("ItemKitBeacon".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 4f64), ("Solder" - .into(), 2f64), ("Steel".into(), 5f64)] .into_iter().collect() - }), ("ItemKitComputer".into(), Recipe { tier : - MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 5f64), ("Iron" - .into(), 5f64)] .into_iter().collect() }), ("ItemKitConsole" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 100f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold".into(), - 3f64), ("Iron".into(), 2f64)] .into_iter().collect() }), - ("ItemKitDynamicGenerator".into(), Recipe { tier : - MachineTier::TierOne, time : 120f64, energy : 5000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Gold".into(), 15f64), ("Nickel".into(), 15f64), ("Solder" - .into(), 5f64), ("Steel".into(), 20f64)] .into_iter().collect() - }), ("ItemKitElevator".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 4f64), ("Solder" - .into(), 2f64), ("Steel".into(), 2f64)] .into_iter().collect() - }), ("ItemKitFridgeBig".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 100f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 5f64), ("Iron" - .into(), 20f64), ("Steel".into(), 15f64)] .into_iter().collect() - }), ("ItemKitFridgeSmall".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 100f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 2f64), ("Iron" - .into(), 10f64)] .into_iter().collect() }), - ("ItemKitGasGenerator".into(), Recipe { tier : - MachineTier::TierOne, time : 120f64, energy : 1000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 10f64), ("Iron".into(), 50f64)] - .into_iter().collect() }), ("ItemKitGroundTelescope".into(), - Recipe { tier : MachineTier::TierOne, time : 150f64, energy : - 24000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Electrum".into(), 15f64), ("Solder" - .into(), 10f64), ("Steel".into(), 25f64)] .into_iter().collect() - }), ("ItemKitGrowLight".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Electrum".into(), 10f64), - ("Steel".into(), 5f64)] .into_iter().collect() }), - ("ItemKitHarvie".into(), Recipe { tier : MachineTier::TierOne, - time : 60f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 5i64, reagents : vec![("Copper" - .into(), 15f64), ("Electrum".into(), 10f64), ("Silicon".into(), - 5f64), ("Solder".into(), 5f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), ("ItemKitHorizontalAutoMiner".into(), - Recipe { tier : MachineTier::TierTwo, time : 60f64, energy : - 60000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 5i64, reagents : vec![("Copper".into(), 7f64), ("Electrum" - .into(), 25f64), ("Invar".into(), 15f64), ("Iron".into(), 8f64), - ("Steel".into(), 60f64)] .into_iter().collect() }), - ("ItemKitHydroponicStation".into(), Recipe { tier : - MachineTier::TierOne, time : 120f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 20f64), ("Gold".into(), 5f64), ("Nickel" - .into(), 5f64), ("Steel".into(), 10f64)] .into_iter().collect() - }), ("ItemKitLandingPadAtmos".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 1f64), ("Steel".into(), 5f64)] - .into_iter().collect() }), ("ItemKitLandingPadBasic".into(), - Recipe { tier : MachineTier::TierOne, time : 10f64, energy : - 1000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 1f64), ("Steel".into(), - 5f64)] .into_iter().collect() }), ("ItemKitLandingPadWaypoint" - .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, - energy : 1000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 1f64), ("Steel".into(), - 5f64)] .into_iter().collect() }), ("ItemKitLargeSatelliteDish" - .into(), Recipe { tier : MachineTier::TierOne, time : 240f64, - energy : 72000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Astroloy".into(), 100f64), ("Inconel" - .into(), 50f64), ("Waspaloy".into(), 20f64)] .into_iter() - .collect() }), ("ItemKitLogicCircuit".into(), Recipe { tier : - MachineTier::TierOne, time : 40f64, energy : 2000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Solder".into(), 2f64), ("Steel" - .into(), 4f64)] .into_iter().collect() }), - ("ItemKitLogicInputOutput".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 1f64), ("Gold".into(), 1f64)] .into_iter() - .collect() }), ("ItemKitLogicMemory".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 1f64), ("Gold".into(), 1f64)] .into_iter() - .collect() }), ("ItemKitLogicProcessor".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)] .into_iter() - .collect() }), ("ItemKitLogicSwitch".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 1f64), ("Gold".into(), 1f64)] .into_iter() - .collect() }), ("ItemKitLogicTransmitter".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 1f64), ("Electrum".into(), 3f64), ("Gold" - .into(), 2f64), ("Silicon".into(), 5f64)] .into_iter().collect() - }), ("ItemKitMusicMachines".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)] .into_iter() - .collect() }), ("ItemKitPowerTransmitter".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 7f64), ("Gold".into(), 5f64), ("Steel" - .into(), 3f64)] .into_iter().collect() }), - ("ItemKitPowerTransmitterOmni".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 8f64), ("Gold".into(), 4f64), ("Steel" - .into(), 4f64)] .into_iter().collect() }), - ("ItemKitPressurePlate".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)] .into_iter() - .collect() }), ("ItemKitResearchMachine".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 10f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Gold".into(), 2f64), ("Iron" - .into(), 9f64)] .into_iter().collect() }), - ("ItemKitSatelliteDish".into(), Recipe { tier : - MachineTier::TierOne, time : 120f64, energy : 24000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Electrum".into(), 15f64), ("Solder".into(), 10f64), - ("Steel".into(), 20f64)] .into_iter().collect() }), - ("ItemKitSensor".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 10f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), 3f64)] - .into_iter().collect() }), ("ItemKitSmallSatelliteDish".into(), - Recipe { tier : MachineTier::TierOne, time : 60f64, energy : - 6000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 10f64), ("Gold".into(), - 5f64)] .into_iter().collect() }), ("ItemKitSolarPanel".into(), - Recipe { tier : MachineTier::TierOne, time : 60f64, energy : - 6000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold".into(), - 5f64), ("Steel".into(), 15f64)] .into_iter().collect() }), - ("ItemKitSolarPanelBasic".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 2f64), ("Iron" - .into(), 10f64)] .into_iter().collect() }), - ("ItemKitSolarPanelBasicReinforced".into(), Recipe { tier : - MachineTier::TierTwo, time : 120f64, energy : 24000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 10f64), ("Electrum".into(), 2f64), - ("Invar".into(), 10f64), ("Steel".into(), 10f64)] .into_iter() - .collect() }), ("ItemKitSolarPanelReinforced".into(), Recipe { - tier : MachineTier::TierTwo, time : 120f64, energy : 24000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Astroloy".into(), 15f64), ("Copper".into(), 20f64), - ("Electrum".into(), 5f64), ("Steel".into(), 10f64)] .into_iter() - .collect() }), ("ItemKitSolidGenerator".into(), Recipe { tier : - MachineTier::TierOne, time : 120f64, energy : 1000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 10f64), ("Iron".into(), 50f64)] - .into_iter().collect() }), ("ItemKitSpeaker".into(), Recipe { - tier : MachineTier::TierOne, time : 10f64, energy : 1000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), - ("ItemKitStirlingEngine".into(), Recipe { tier : - MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 20f64), ("Gold".into(), 5f64), ("Steel" - .into(), 30f64)] .into_iter().collect() }), ("ItemKitTransformer" - .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, - energy : 12000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Electrum".into(), 5f64), ("Steel".into(), - 10f64)] .into_iter().collect() }), ("ItemKitTransformerSmall" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold".into(), - 1f64), ("Iron".into(), 10f64)] .into_iter().collect() }), - ("ItemKitTurbineGenerator".into(), Recipe { tier : - MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 4f64), ("Iron" - .into(), 5f64), ("Solder".into(), 4f64)] .into_iter().collect() - }), ("ItemKitUprightWindTurbine".into(), Recipe { tier : - MachineTier::TierOne, time : 60f64, energy : 12000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 5f64), ("Iron" - .into(), 10f64)] .into_iter().collect() }), - ("ItemKitVendingMachine".into(), Recipe { tier : - MachineTier::TierOne, time : 60f64, energy : 15000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Electrum".into(), 50f64), ("Gold".into(), 50f64), - ("Solder".into(), 10f64), ("Steel".into(), 20f64)] .into_iter() - .collect() }), ("ItemKitVendingMachineRefrigerated".into(), - Recipe { tier : MachineTier::TierTwo, time : 60f64, energy : - 25000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 4i64, reagents : vec![("Electrum".into(), 80f64), ("Gold".into(), - 60f64), ("Solder".into(), 30f64), ("Steel".into(), 40f64)] - .into_iter().collect() }), ("ItemKitWeatherStation".into(), - Recipe { tier : MachineTier::TierOne, time : 60f64, energy : - 12000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 4i64, reagents : vec![("Copper".into(), 5f64), ("Gold".into(), - 3f64), ("Iron".into(), 8f64), ("Steel".into(), 3f64)] - .into_iter().collect() }), ("ItemKitWindTurbine".into(), Recipe { - tier : MachineTier::TierTwo, time : 60f64, energy : 12000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Electrum".into(), 5f64), - ("Steel".into(), 20f64)] .into_iter().collect() }), - ("ItemLabeller".into(), Recipe { tier : MachineTier::TierOne, - time : 15f64, energy : 800f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 2f64), ("Gold".into(), 1f64), ("Iron".into(), 3f64)] - .into_iter().collect() }), ("ItemLaptop".into(), Recipe { tier : - MachineTier::TierTwo, time : 60f64, energy : 18000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 5i64, reagents : - vec![("Copper".into(), 5.5f64), ("Electrum".into(), 5f64), - ("Gold".into(), 12f64), ("Solder".into(), 5f64), ("Steel".into(), - 2f64)] .into_iter().collect() }), ("ItemPowerConnector".into(), - Recipe { tier : MachineTier::TierOne, time : 1f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold".into(), - 3f64), ("Iron".into(), 10f64)] .into_iter().collect() }), - ("ItemResearchCapsule".into(), Recipe { tier : - MachineTier::TierOne, time : 3f64, energy : 400f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Gold".into(), 2f64), ("Iron" - .into(), 9f64)] .into_iter().collect() }), - ("ItemResearchCapsuleGreen".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 10f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Astroloy".into(), 2f64), ("Copper".into(), 3f64), ("Gold" - .into(), 2f64), ("Iron".into(), 9f64)] .into_iter().collect() }), - ("ItemResearchCapsuleRed".into(), Recipe { tier : - MachineTier::TierOne, time : 8f64, energy : 50f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Gold".into(), 2f64), ("Iron" - .into(), 2f64)] .into_iter().collect() }), - ("ItemResearchCapsuleYellow".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Astroloy".into(), 3f64), ("Copper".into(), 3f64), ("Gold" - .into(), 2f64), ("Iron".into(), 9f64)] .into_iter().collect() }), - ("ItemSoundCartridgeBass".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64), ("Silicon" - .into(), 2f64)] .into_iter().collect() }), - ("ItemSoundCartridgeDrums".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64), ("Silicon" - .into(), 2f64)] .into_iter().collect() }), - ("ItemSoundCartridgeLeads".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64), ("Silicon" - .into(), 2f64)] .into_iter().collect() }), - ("ItemSoundCartridgeSynth".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64), ("Silicon" - .into(), 2f64)] .into_iter().collect() }), ("ItemTablet".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : - 100f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold".into(), - 2f64), ("Solder".into(), 5f64)] .into_iter().collect() }), - ("ItemWallLight".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 10f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 2f64), ("Iron".into(), 1f64)] .into_iter().collect() }), - ("MotherboardComms".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 4i64, reagents : vec![("Copper" - .into(), 5f64), ("Electrum".into(), 2f64), ("Gold".into(), 5f64), - ("Silver".into(), 5f64)] .into_iter().collect() }), - ("MotherboardLogic".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 5f64), ("Gold".into(), 5f64)] .into_iter().collect() }), - ("MotherboardProgrammableChip".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() - .collect() }), ("MotherboardRockets".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Electrum".into(), 5f64), ("Solder".into(), 5f64)] - .into_iter().collect() }), ("MotherboardSorter".into(), Recipe { - tier : MachineTier::TierOne, time : 5f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Gold".into(), 5f64), ("Silver".into(), 5f64)] .into_iter() - .collect() }), ("PipeBenderMod".into(), Recipe { tier : - MachineTier::TierTwo, time : 180f64, energy : 72000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Constantan".into(), 8f64), ("Electrum".into(), 8f64), - ("Solder".into(), 8f64), ("Steel".into(), 35f64)] .into_iter() - .collect() }), ("PortableComposter".into(), Recipe { tier : - MachineTier::TierOne, time : 55f64, energy : 20000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 15f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), ("PortableSolarPanel".into(), Recipe { - tier : MachineTier::TierOne, time : 5f64, energy : 200f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 3f64), ("Iron" - .into(), 5f64)] .into_iter().collect() }), ("ToolPrinterMod" - .into(), Recipe { tier : MachineTier::TierTwo, time : 180f64, - energy : 72000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 4i64, reagents : vec![("Constantan".into(), 8f64), ("Electrum" - .into(), 8f64), ("Solder".into(), 8f64), ("Steel".into(), 35f64)] - .into_iter().collect() }) - ] - .into_iter() - .collect(), - }), - memory: MemoryInfo { - instructions: Some( - vec![ - ("DeviceSetLock".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" - .into(), typ : "PrinterInstruction".into(), value : 6i64 }), - ("EjectAllReagents".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 8i64 }), - ("EjectReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "PrinterInstruction".into(), value : 7i64 }), - ("ExecuteRecipe".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 2i64 }), - ("JumpIfNextInvalid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 4i64 }), - ("JumpToAddress".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 5i64 }), - ("MissingRecipeReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 9i64 }), - ("StackPointer".into(), Instruction { description : - "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 1i64 }), - ("WaitUntilNextValid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 3i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::ReadWrite, - memory_size: 64u32, - }, - } - .into(), - ), - ( - -827912235i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureElevatorLevelFront".into(), - prefab_hash: -827912235i32, - desc: "".into(), - name: "Elevator Level (Cabled)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ElevatorSpeed, - MemoryAccess::ReadWrite), (LogicType::ElevatorLevel, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Elevator, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Elevator, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 2060648791i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureElevatorLevelIndustrial".into(), - prefab_hash: 2060648791i32, - desc: "".into(), - name: "Elevator Level".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ElevatorSpeed, - MemoryAccess::ReadWrite), (LogicType::ElevatorLevel, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Elevator, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Elevator, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 826144419i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureElevatorShaft".into(), - prefab_hash: 826144419i32, - desc: "".into(), - name: "Elevator Shaft (Cabled)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ElevatorSpeed, - MemoryAccess::ReadWrite), (LogicType::ElevatorLevel, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Elevator, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Elevator, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1998354978i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureElevatorShaftIndustrial".into(), - prefab_hash: 1998354978i32, - desc: "".into(), - name: "Elevator Shaft".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::ElevatorSpeed, MemoryAccess::ReadWrite), - (LogicType::ElevatorLevel, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Elevator, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Elevator, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1668452680i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureEmergencyButton".into(), - prefab_hash: 1668452680i32, - desc: "Description coming.".into(), - name: "Important Button".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 2035781224i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureEngineMountTypeA1".into(), - prefab_hash: 2035781224i32, - desc: "".into(), - name: "Engine Mount (Type A1)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1429782576i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureEvaporationChamber".into(), - prefab_hash: -1429782576i32, - desc: "A device for safely evaporating liquids into gasses. Liquids and Gasses will both exist safely inside the device. Lowering the pressure target of the in-built back pressure regulator using the setting wheel will change the boiling temperature of liquids inside.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Evaporation Chamber. \n Paired with Condensation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner." - .into(), - name: "Evaporation Chamber".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.001f32, - radiation_factor: 0.000050000002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input2 }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 195298587i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureExpansionValve".into(), - prefab_hash: 195298587i32, - desc: "Allows for moving liquids from a liquid pipe into a gas pipe. Only allows liquids to pass in one direction. Typically this is done to allow the liquid to evaporate into a gas as part of an airconditioning loop." - .into(), - name: "Expansion Valve".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1622567418i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFairingTypeA1".into(), - prefab_hash: 1622567418i32, - desc: "".into(), - name: "Fairing (Type A1)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -104908736i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFairingTypeA2".into(), - prefab_hash: -104908736i32, - desc: "".into(), - name: "Fairing (Type A2)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1900541738i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFairingTypeA3".into(), - prefab_hash: -1900541738i32, - desc: "".into(), - name: "Fairing (Type A3)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -348054045i32, - StructureCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFiltration".into(), - prefab_hash: -348054045i32, - desc: "The Filtration Unit is based on a long-standing ExMin system, itself based on older designs of uncertain provenance. It is available in the Kit (Atmospherics).\nThe device has nonetheless proven indispensable for Stationeer atmospheric systems, as it can filter two gases simultaneously from a single pipe network using a dual filter array. The unit has an input, and a filter output as well as an unfiltered outlet for any residual gases.\n" - .into(), - name: "Filtration".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()), (2u32, vec![] .into_iter().collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::PressureInput, MemoryAccess::Read), - (LogicType::TemperatureInput, MemoryAccess::Read), - (LogicType::RatioOxygenInput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioNitrogenInput, MemoryAccess::Read), - (LogicType::RatioPollutantInput, MemoryAccess::Read), - (LogicType::RatioVolatilesInput, MemoryAccess::Read), - (LogicType::RatioWaterInput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), - (LogicType::TotalMolesInput, MemoryAccess::Read), - (LogicType::PressureOutput, MemoryAccess::Read), - (LogicType::TemperatureOutput, MemoryAccess::Read), - (LogicType::RatioOxygenOutput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioPollutantOutput, MemoryAccess::Read), - (LogicType::RatioVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioWaterOutput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), - (LogicType::TotalMolesOutput, MemoryAccess::Read), - (LogicType::PressureOutput2, MemoryAccess::Read), - (LogicType::TemperatureOutput2, MemoryAccess::Read), - (LogicType::RatioOxygenOutput2, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideOutput2, MemoryAccess::Read), - (LogicType::RatioNitrogenOutput2, MemoryAccess::Read), - (LogicType::RatioPollutantOutput2, MemoryAccess::Read), - (LogicType::RatioVolatilesOutput2, MemoryAccess::Read), - (LogicType::RatioWaterOutput2, MemoryAccess::Read), - (LogicType::RatioNitrousOxideOutput2, MemoryAccess::Read), - (LogicType::TotalMolesOutput2, MemoryAccess::Read), - (LogicType::CombustionInput, MemoryAccess::Read), - (LogicType::CombustionOutput, MemoryAccess::Read), - (LogicType::CombustionOutput2, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenOutput2, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenOutput2, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesOutput2, MemoryAccess::Read), - (LogicType::RatioSteamInput, MemoryAccess::Read), - (LogicType::RatioSteamOutput, MemoryAccess::Read), - (LogicType::RatioSteamOutput2, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideOutput2, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantOutput2, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideOutput2, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Gas Filter".into(), typ : Class::GasFilter }, - SlotInfo { name : "Gas Filter".into(), typ : Class::GasFilter }, - SlotInfo { name : "Programmable Chip".into(), typ : - Class::ProgrammableChip } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Waste }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: Some(2u32), - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1529819532i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFlagSmall".into(), - prefab_hash: -1529819532i32, - desc: "".into(), - name: "Small Flag".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1535893860i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFlashingLight".into(), - prefab_hash: -1535893860i32, - desc: "Few objects or ideas are as clearly and transparently named as the Flashing Light, although fans of scrupulous accuracy have been known to refer to it by its full, official title: \'Default Yellow Flashing Light\'." - .into(), - name: "Flashing Light".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 839890807i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFlatBench".into(), - prefab_hash: 839890807i32, - desc: "".into(), - name: "Bench (Flat)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1048813293i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFloorDrain".into(), - prefab_hash: 1048813293i32, - desc: "A passive liquid floor inlet that quickly removes liquids in one direction from the world into the connected pipe network. It will equalise gasses with the world atmosphere also." - .into(), - name: "Passive Liquid Inlet".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1432512808i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFrame".into(), - prefab_hash: 1432512808i32, - desc: "More durable than the Iron Frame, steel frames also have several variations for more complex constructions, such as the Steel Frame (Corner) and Steel Frame (Corner Cut). Like iron frames, they are placed then completed by welding Steel Sheets to the open framework." - .into(), - name: "Steel Frame".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2112390778i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFrameCorner".into(), - prefab_hash: -2112390778i32, - desc: "More durable than the Iron Frame, steel frames also offer several variations for more complex lattice constructions. \nWith a little patience and maneuvering, the corner frame\'s Gothic-inspired silhouette allows the creation of ogival arches and even more ambitious architecture, although they are not airtight and cannot be built on." - .into(), - name: "Steel Frame (Corner)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 271315669i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFrameCornerCut".into(), - prefab_hash: 271315669i32, - desc: "0.Mode0\n1.Mode1".into(), - name: "Steel Frame (Corner Cut)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1240951678i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFrameIron".into(), - prefab_hash: -1240951678i32, - desc: "".into(), - name: "Iron Frame".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -302420053i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFrameSide".into(), - prefab_hash: -302420053i32, - desc: "More durable than the Iron Frame, steel frames also provide variations for more ornate constructions." - .into(), - name: "Steel Frame (Side)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 958476921i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFridgeBig".into(), - prefab_hash: 958476921i32, - desc: "The Xigo Koolaid fridge is a self-cooling storage device with 15 slots that preserves food when powered and turned on. While many users have complained about the placement of the power switch, its place in the pantheon of off-world whiteware is unquestioned.\n \nWith its own permanent internal atmosphere, the Koolaid fridge slows the decay of food by maintaining an optimal internal temperature. Its power usage varies on the external temperature against which it must balance its internal temperature. As such, it must shed heat to operate, so the Koolaid fridge DOES NOT work in a vacuum.\n \nAlso, don\'t leave the door open, as it will equalize with the current world temperature. And maybe start to beep.\n\nFor more information about food preservation, visit the food decay section of the Stationpedia." - .into(), - name: "Fridge (Large)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 751887598i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFridgeSmall".into(), - prefab_hash: 751887598i32, - desc: "Essentially a heavily insulated box that allows users to pipe in any desired atmosphere, the Recurso Minibar fridge was a simple solution to the problem of food decay. It stores a small number of items, at any temperature you can muster.\n \n For more information about food preservation, visit the food decay section of the Stationpedia." - .into(), - name: "Fridge Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1947944864i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFurnace".into(), - prefab_hash: 1947944864i32, - desc: "The Zhurong furnace employs a high-temperature gas mixture of Oxygen and Volatiles to smelt ingots and a range of alloys as raw materials for fabricators.\nA basic gas mixture can be achieved by adding Ice (Oxite) and Ice (Volatiles) in a 1:2 ratio directly to the furnace, but more complex alloys will require careful management of a dedicated gas mixing network. Exact ingredient ratios must be observed. Likewise, smelting ores at insufficient temperatures will produce reagents, which must be recycled.\nIf liquids are present in the furnace, they will gather there until the furnace is connected to a liquid pipe network." - .into(), - name: "Furnace".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::RecipeHash, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output2 }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: true, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: false, - has_open_state: true, - has_reagents: true, - }, - } - .into(), - ), - ( - 1033024712i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFuselageTypeA1".into(), - prefab_hash: 1033024712i32, - desc: "".into(), - name: "Fuselage (Type A1)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1533287054i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFuselageTypeA2".into(), - prefab_hash: -1533287054i32, - desc: "".into(), - name: "Fuselage (Type A2)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1308115015i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFuselageTypeA4".into(), - prefab_hash: 1308115015i32, - desc: "".into(), - name: "Fuselage (Type A4)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 147395155i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureFuselageTypeC5".into(), - prefab_hash: 147395155i32, - desc: "".into(), - name: "Fuselage (Type C5)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1165997963i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGasGenerator".into(), - prefab_hash: 1165997963i32, - desc: "".into(), - name: "Gas Fuel Generator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.01f32, - radiation_factor: 0.01f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PowerGeneration, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 2104106366i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGasMixer".into(), - prefab_hash: 2104106366i32, - desc: "Indispensable for producing precise atmospheric ratios, this gas mixer blends two gases in proportions ranging anywhere from 0-100%." - .into(), - name: "Gas Mixer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input2 }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1252983604i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGasSensor".into(), - prefab_hash: -1252983604i32, - desc: "Gas sensors are designed to monitor and report basic atmospheric information, including temperature, pressure, and gas ratios. They also make wonderful wedding presents." - .into(), - name: "Gas Sensor".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1632165346i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGasTankStorage".into(), - prefab_hash: 1632165346i32, - desc: "When connected to a pipe network, the tank storage unit allows you to refill a Canister, as well as read various atmospheric data from the Gas Canister." - .into(), - name: "Gas Tank Storage".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Quantity, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1680477930i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGasUmbilicalFemale".into(), - prefab_hash: -1680477930i32, - desc: "".into(), - name: "Umbilical Socket (Gas)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -648683847i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGasUmbilicalFemaleSide".into(), - prefab_hash: -648683847i32, - desc: "".into(), - name: "Umbilical Socket Angle (Gas)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1814939203i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGasUmbilicalMale".into(), - prefab_hash: -1814939203i32, - desc: "0.Left\n1.Center\n2.Right".into(), - name: "Umbilical (Gas)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), - (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Left".into()), (1u32, "Center".into()), (2u32, - "Right".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -324331872i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGlassDoor".into(), - prefab_hash: -324331872i32, - desc: "0.Operate\n1.Logic".into(), - name: "Glass Door".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -214232602i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGovernedGasEngine".into(), - prefab_hash: -214232602i32, - desc: "The most reliable of all the rocket engines, the Pumped Gas Engine runs on a 2:1 mix of Volatiles to Oxygen gas." - .into(), - name: "Pumped Gas Engine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::Throttle, MemoryAccess::ReadWrite), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::PassedMoles, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -619745681i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGroundBasedTelescope".into(), - prefab_hash: -619745681i32, - desc: "A telescope that can be oriented to observe Celestial Bodies. When within full alignment will show orbital information for that celestial object. Atmospheric conditions may disrupt the ability to observe some objects at some times of day. To collect Horizontal and Vertical values you can use a Rocket Celestial Tracker while it is in orbit, or a Daylight Sensor for primary body data." - .into(), - name: "Telescope".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::HorizontalRatio, - MemoryAccess::ReadWrite), (LogicType::VerticalRatio, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::CelestialHash, - MemoryAccess::Read), (LogicType::AlignmentError, - MemoryAccess::Read), (LogicType::DistanceAu, MemoryAccess::Read), - (LogicType::OrbitPeriod, MemoryAccess::Read), - (LogicType::Inclination, MemoryAccess::Read), - (LogicType::Eccentricity, MemoryAccess::Read), - (LogicType::SemiMajorAxis, MemoryAccess::Read), - (LogicType::DistanceKm, MemoryAccess::Read), - (LogicType::CelestialParentHash, MemoryAccess::Read), - (LogicType::TrueAnomaly, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1758710260i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureGrowLight".into(), - prefab_hash: -1758710260i32, - desc: "Agrizero\'s leading hydroponic lighting system, the GrowUp UV light supplements sunshine in low light or sun-distant conditions. The unit adds growability over the space of a grid, so requires proximate placement to work. " - .into(), - name: "Grow Light".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 958056199i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureHarvie".into(), - prefab_hash: 958056199i32, - desc: "Use above a Hydroponics Tray or Hydroponics Device to manage the planting and harvest of your crops. It contains a button that will allow you to activate it\'s modes, or connect it to a logic system to do this for you. The modes indicate current growth status of the plant below. Import is used for planting, and harvested plants are sent to export." - .into(), - name: "Harvie".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::Plant, MemoryAccess::Write), - (LogicType::Harvest, MemoryAccess::Write), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Idle".into()), (1u32, "Happy".into()), (2u32, - "UnHappy".into()), (3u32, "Dead".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::Plant }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : "Hand" - .into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 944685608i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureHeatExchangeLiquidtoGas".into(), - prefab_hash: 944685608i32, - desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass separate liquid and gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to devices like a Volume Pump or a Liquid Back Volume Regulator." - .into(), - name: "Heat Exchanger - Liquid + Gas".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 21266291i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureHeatExchangerGastoGas".into(), - prefab_hash: 21266291i32, - desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass two gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to gas management devices like a Volume Pump or a Back Pressure Regulator." - .into(), - name: "Heat Exchanger - Gas".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -613784254i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureHeatExchangerLiquidtoLiquid".into(), - prefab_hash: -613784254i32, - desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass two liquid networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to liquid management devices like a Liquid Volume Pump or a Liquid Back Volume Regulator.\n" - .into(), - name: "Heat Exchanger - Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1070427573i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureHorizontalAutoMiner".into(), - prefab_hash: 1070427573i32, - desc: "The Recurso OGRE (Orthogonal Ground Rotating Excavator) is a base structure with attached mining vehicle, which will mine a horizontal shaft up to X meters long. When full, the mining vehicle will return to the base to empty itself, before returning to dig. If it encounters empty space, it will also return to base and await instruction. The unit will return if deactivated.\n \nThe OGRE can be connected to a chute system, and is controllable by a logic network. Note that the OGRE outputs more ore than a conventional Mining Drill over the same area, due to more efficient processing.\n\nMODES\nIdle - 0\nMining - 1\nReturning - 2\nDepostingOre - 3\nFinished - 4\n" - .into(), - name: "OGRE".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1888248335i32, - StructureLogicDeviceConsumerMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureHydraulicPipeBender".into(), - prefab_hash: -1888248335i32, - desc: "A go-to tool for all your atmospheric and plumbing needs, the ExMin Atmoprinter will create everything from pipes, pumps and tanks, to vents and filters, ensuring your survival in any environment. Upgrade the Atmoprinter using a Pipe Bender Mod for additional recipes and faster processing speeds." - .into(), - name: "Hydraulic Pipe Bender".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RecipeHash, MemoryAccess::ReadWrite), - (LogicType::CompletionRatio, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), - "ItemCopperIngot".into(), "ItemElectrumIngot".into(), - "ItemGoldIngot".into(), "ItemHastelloyIngot".into(), - "ItemInconelIngot".into(), "ItemInvarIngot".into(), - "ItemIronIngot".into(), "ItemLeadIngot".into(), "ItemNickelIngot" - .into(), "ItemSiliconIngot".into(), "ItemSilverIngot".into(), - "ItemSolderIngot".into(), "ItemSolidFuel".into(), - "ItemSteelIngot".into(), "ItemStelliteIngot".into(), - "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - fabricator_info: Some(FabricatorInfo { - tier: MachineTier::Undefined, - recipes: vec![ - ("ApplianceSeedTray".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 10f64), ("Silicon" - .into(), 15f64)] .into_iter().collect() }), ("ItemActiveVent" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold".into(), - 1f64), ("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemAdhesiveInsulation".into(), Recipe { tier : - MachineTier::TierOne, time : 2f64, energy : 200f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Silicon".into(), 1f64), ("Steel".into(), 0.5f64)] - .into_iter().collect() }), ("ItemDynamicAirCon".into(), Recipe { - tier : MachineTier::TierOne, time : 60f64, energy : 5000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Gold".into(), 5f64), ("Silver".into(), 5f64), ("Solder" - .into(), 5f64), ("Steel".into(), 20f64)] .into_iter().collect() - }), ("ItemDynamicScrubber".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Gold".into(), 5f64), ("Invar".into(), 5f64), ("Solder" - .into(), 5f64), ("Steel".into(), 20f64)] .into_iter().collect() - }), ("ItemGasCanisterEmpty".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemGasCanisterSmart".into(), Recipe { tier : - MachineTier::TierTwo, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Silicon".into(), 2f64), ("Steel" - .into(), 15f64)] .into_iter().collect() }), - ("ItemGasFilterCarbonDioxide".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterCarbonDioxideL".into(), Recipe { tier : - MachineTier::TierTwo, time : 45f64, energy : 4000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite" - .into(), 1f64)] .into_iter().collect() }), - ("ItemGasFilterCarbonDioxideM".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 1f64), ("Iron".into(), 5f64), - ("Silver".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterNitrogen".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterNitrogenL".into(), Recipe { tier : - MachineTier::TierTwo, time : 45f64, energy : 4000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite" - .into(), 1f64)] .into_iter().collect() }), - ("ItemGasFilterNitrogenM".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 1f64), ("Iron".into(), 5f64), - ("Silver".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterNitrousOxide".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterNitrousOxideL".into(), Recipe { tier : - MachineTier::TierTwo, time : 45f64, energy : 4000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite" - .into(), 1f64)] .into_iter().collect() }), - ("ItemGasFilterNitrousOxideM".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 1f64), ("Iron".into(), 5f64), - ("Silver".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterOxygen".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterOxygenL".into(), Recipe { tier : - MachineTier::TierTwo, time : 45f64, energy : 4000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite" - .into(), 1f64)] .into_iter().collect() }), - ("ItemGasFilterOxygenM".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 1f64), ("Iron".into(), 5f64), - ("Silver".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterPollutants".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterPollutantsL".into(), Recipe { tier : - MachineTier::TierTwo, time : 45f64, energy : 4000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite" - .into(), 1f64)] .into_iter().collect() }), - ("ItemGasFilterPollutantsM".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 1f64), ("Iron".into(), 5f64), - ("Silver".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterVolatiles".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterVolatilesL".into(), Recipe { tier : - MachineTier::TierTwo, time : 45f64, energy : 4000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite" - .into(), 1f64)] .into_iter().collect() }), - ("ItemGasFilterVolatilesM".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 1f64), ("Iron".into(), 5f64), - ("Silver".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterWater".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemGasFilterWaterL".into(), Recipe { tier : - MachineTier::TierTwo, time : 45f64, energy : 4000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite" - .into(), 1f64)] .into_iter().collect() }), ("ItemGasFilterWaterM" - .into(), Recipe { tier : MachineTier::TierOne, time : 20f64, - energy : 2500f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Constantan".into(), 1f64), ("Iron" - .into(), 5f64), ("Silver".into(), 5f64)] .into_iter().collect() - }), ("ItemHydroponicTray".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 10f64)] .into_iter().collect() }), - ("ItemKitAirlock".into(), Recipe { tier : MachineTier::TierOne, - time : 50f64, energy : 5000f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 5f64), ("Gold".into(), 5f64), ("Steel".into(), 15f64)] - .into_iter().collect() }), ("ItemKitAirlockGate".into(), Recipe { - tier : MachineTier::TierOne, time : 60f64, energy : 6000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Steel" - .into(), 25f64)] .into_iter().collect() }), - ("ItemKitAtmospherics".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 6000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 20f64), ("Gold".into(), 5f64), ("Iron" - .into(), 10f64)] .into_iter().collect() }), ("ItemKitChute" - .into(), Recipe { tier : MachineTier::TierOne, time : 2f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 3f64)] .into_iter() - .collect() }), ("ItemKitCryoTube".into(), Recipe { tier : - MachineTier::TierTwo, time : 120f64, energy : 24000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 10f64), ("Silver" - .into(), 5f64), ("Steel".into(), 35f64)] .into_iter().collect() - }), ("ItemKitDrinkingFountain".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 620f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Iron".into(), 5f64), ("Silicon" - .into(), 8f64)] .into_iter().collect() }), - ("ItemKitDynamicCanister".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 20f64)] .into_iter().collect() }), - ("ItemKitDynamicGasTankAdvanced".into(), Recipe { tier : - MachineTier::TierTwo, time : 40f64, energy : 2000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 20f64), ("Silicon" - .into(), 5f64), ("Steel".into(), 15f64)] .into_iter().collect() - }), ("ItemKitDynamicHydroponics".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Nickel".into(), 5f64), ("Steel" - .into(), 20f64)] .into_iter().collect() }), - ("ItemKitDynamicLiquidCanister".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 20f64)] .into_iter().collect() }), - ("ItemKitDynamicMKIILiquidCanister".into(), Recipe { tier : - MachineTier::TierTwo, time : 40f64, energy : 2000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 20f64), ("Silicon" - .into(), 5f64), ("Steel".into(), 15f64)] .into_iter().collect() - }), ("ItemKitEvaporationChamber".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Silicon".into(), 5f64), ("Steel" - .into(), 10f64)] .into_iter().collect() }), - ("ItemKitHeatExchanger".into(), Recipe { tier : - MachineTier::TierTwo, time : 30f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Invar".into(), 10f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), ("ItemKitIceCrusher".into(), Recipe { - tier : MachineTier::TierOne, time : 30f64, energy : 3000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron" - .into(), 3f64)] .into_iter().collect() }), - ("ItemKitInsulatedLiquidPipe".into(), Recipe { tier : - MachineTier::TierOne, time : 4f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Silicon".into(), 1f64), ("Steel".into(), 1f64)] - .into_iter().collect() }), ("ItemKitInsulatedPipe".into(), Recipe - { tier : MachineTier::TierOne, time : 4f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Silicon".into(), 1f64), ("Steel".into(), 1f64)] - .into_iter().collect() }), ("ItemKitInsulatedPipeUtility".into(), - Recipe { tier : MachineTier::TierOne, time : 15f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Silicon".into(), 1f64), ("Steel".into(), - 5f64)] .into_iter().collect() }), - ("ItemKitInsulatedPipeUtilityLiquid".into(), Recipe { tier : - MachineTier::TierOne, time : 15f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Silicon".into(), 1f64), ("Steel".into(), 5f64)] - .into_iter().collect() }), ("ItemKitLargeDirectHeatExchanger" - .into(), Recipe { tier : MachineTier::TierTwo, time : 30f64, - energy : 1000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Invar".into(), 10f64), ("Steel".into(), - 10f64)] .into_iter().collect() }), - ("ItemKitLargeExtendableRadiator".into(), Recipe { tier : - MachineTier::TierTwo, time : 30f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 10f64), ("Invar".into(), 10f64), ("Steel" - .into(), 10f64)] .into_iter().collect() }), - ("ItemKitLiquidRegulator".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 1f64), ("Iron" - .into(), 5f64)] .into_iter().collect() }), ("ItemKitLiquidTank" - .into(), Recipe { tier : MachineTier::TierOne, time : 20f64, - energy : 2000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel".into(), - 20f64)] .into_iter().collect() }), ("ItemKitLiquidTankInsulated" - .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, - energy : 6000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 5f64), ("Silicon".into(), - 30f64), ("Steel".into(), 20f64)] .into_iter().collect() }), - ("ItemKitLiquidTurboVolumePump".into(), Recipe { tier : - MachineTier::TierTwo, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 4f64), ("Electrum".into(), 5f64), ("Gold" - .into(), 4f64), ("Steel".into(), 5f64)] .into_iter().collect() - }), ("ItemKitPassiveLargeRadiatorGas".into(), Recipe { tier : - MachineTier::TierTwo, time : 30f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Invar".into(), 5f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), - ("ItemKitPassiveLargeRadiatorLiquid".into(), Recipe { tier : - MachineTier::TierTwo, time : 30f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Invar".into(), 5f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), - ("ItemKitPassthroughHeatExchanger".into(), Recipe { tier : - MachineTier::TierTwo, time : 30f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Invar".into(), 10f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), ("ItemKitPipe".into(), Recipe { tier : - MachineTier::TierOne, time : 2f64, energy : 200f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 0.5f64)] .into_iter().collect() }), - ("ItemKitPipeLiquid".into(), Recipe { tier : - MachineTier::TierOne, time : 2f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 0.5f64)] .into_iter().collect() }), - ("ItemKitPipeOrgan".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 100f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 3f64)] .into_iter().collect() }), ("ItemKitPipeRadiator".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Gold".into(), 3f64), ("Steel".into(), - 2f64)] .into_iter().collect() }), ("ItemKitPipeRadiatorLiquid" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Gold".into(), 3f64), ("Steel".into(), - 2f64)] .into_iter().collect() }), ("ItemKitPipeUtility".into(), - Recipe { tier : MachineTier::TierOne, time : 15f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 5f64)] .into_iter() - .collect() }), ("ItemKitPipeUtilityLiquid".into(), Recipe { tier - : MachineTier::TierOne, time : 15f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemKitPlanter".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 10f64)] .into_iter().collect() }), ("ItemKitPortablesConnector" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 5f64)] .into_iter() - .collect() }), ("ItemKitPoweredVent".into(), Recipe { tier : - MachineTier::TierTwo, time : 20f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Electrum".into(), 5f64), ("Invar".into(), 2f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), ("ItemKitRegulator" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold".into(), - 1f64), ("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemKitSensor".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] - .into_iter().collect() }), ("ItemKitShower".into(), Recipe { tier - : MachineTier::TierOne, time : 30f64, energy : 3000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 5f64), ("Silicon" - .into(), 5f64)] .into_iter().collect() }), ("ItemKitSleeper" - .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, - energy : 6000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold".into(), - 10f64), ("Steel".into(), 25f64)] .into_iter().collect() }), - ("ItemKitSmallDirectHeatExchanger".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Steel".into(), 3f64)] - .into_iter().collect() }), ("ItemKitStandardChute".into(), Recipe - { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 2f64), ("Electrum".into(), 2f64), - ("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemKitSuitStorage".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 15f64), ("Silver" - .into(), 5f64)] .into_iter().collect() }), ("ItemKitTank".into(), - Recipe { tier : MachineTier::TierOne, time : 20f64, energy : - 2000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel".into(), - 20f64)] .into_iter().collect() }), ("ItemKitTankInsulated" - .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, - energy : 6000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 5f64), ("Silicon".into(), - 30f64), ("Steel".into(), 20f64)] .into_iter().collect() }), - ("ItemKitTurboVolumePump".into(), Recipe { tier : - MachineTier::TierTwo, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 4f64), ("Electrum".into(), 5f64), ("Gold" - .into(), 4f64), ("Steel".into(), 5f64)] .into_iter().collect() - }), ("ItemKitWaterBottleFiller".into(), Recipe { tier : - MachineTier::TierOne, time : 7f64, energy : 620f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Iron".into(), 5f64), ("Silicon" - .into(), 8f64)] .into_iter().collect() }), - ("ItemKitWaterPurifier".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 6000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 20f64), ("Gold".into(), 5f64), ("Iron" - .into(), 10f64)] .into_iter().collect() }), - ("ItemLiquidCanisterEmpty".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemLiquidCanisterSmart".into(), Recipe { tier : - MachineTier::TierTwo, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Silicon".into(), 2f64), ("Steel" - .into(), 15f64)] .into_iter().collect() }), ("ItemLiquidDrain" - .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron".into(), - 5f64)] .into_iter().collect() }), ("ItemLiquidPipeAnalyzer" - .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Electrum".into(), 2f64), ("Gold".into(), - 2f64), ("Iron".into(), 2f64)] .into_iter().collect() }), - ("ItemLiquidPipeHeater".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Gold".into(), 3f64), ("Iron" - .into(), 5f64)] .into_iter().collect() }), ("ItemLiquidPipeValve" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron".into(), - 3f64)] .into_iter().collect() }), ("ItemLiquidPipeVolumePump" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold".into(), - 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemPassiveVent".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 3f64)] .into_iter().collect() }), ("ItemPassiveVentInsulated" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Silicon".into(), 5f64), ("Steel".into(), - 1f64)] .into_iter().collect() }), ("ItemPipeAnalyizer".into(), - Recipe { tier : MachineTier::TierOne, time : 10f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Electrum".into(), 2f64), ("Gold".into(), - 2f64), ("Iron".into(), 2f64)] .into_iter().collect() }), - ("ItemPipeCowl".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 3f64)] .into_iter().collect() }), ("ItemPipeDigitalValve".into(), - Recipe { tier : MachineTier::TierOne, time : 15f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 2f64), ("Invar".into(), - 3f64), ("Steel".into(), 5f64)] .into_iter().collect() }), - ("ItemPipeGasMixer".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 2f64), ("Gold".into(), 2f64), ("Iron".into(), 2f64)] - .into_iter().collect() }), ("ItemPipeHeater".into(), Recipe { - tier : MachineTier::TierOne, time : 5f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Gold".into(), 3f64), ("Iron" - .into(), 5f64)] .into_iter().collect() }), ("ItemPipeIgniter" - .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Electrum".into(), 2f64), ("Iron".into(), - 2f64)] .into_iter().collect() }), ("ItemPipeLabel".into(), Recipe - { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemPipeMeter".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 2f64), ("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemPipeValve".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 2f64), ("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemPipeVolumePump".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Gold".into(), 2f64), ("Iron" - .into(), 5f64)] .into_iter().collect() }), ("ItemWallCooler" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold".into(), - 1f64), ("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemWallHeater".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 3f64), ("Gold".into(), 1f64), ("Iron".into(), 3f64)] - .into_iter().collect() }), ("ItemWaterBottle".into(), Recipe { - tier : MachineTier::TierOne, time : 4f64, energy : 120f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Iron".into(), 2f64), ("Silicon".into(), 4f64)] - .into_iter().collect() }), ("ItemWaterPipeDigitalValve".into(), - Recipe { tier : MachineTier::TierOne, time : 15f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 2f64), ("Invar".into(), - 3f64), ("Steel".into(), 5f64)] .into_iter().collect() }), - ("ItemWaterPipeMeter".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 2f64), ("Iron".into(), 3f64)] .into_iter() - .collect() }), ("ItemWaterWallCooler".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Gold".into(), 1f64), ("Iron" - .into(), 3f64)] .into_iter().collect() }) - ] - .into_iter() - .collect(), - }), - memory: MemoryInfo { - instructions: Some( - vec![ - ("DeviceSetLock".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" - .into(), typ : "PrinterInstruction".into(), value : 6i64 }), - ("EjectAllReagents".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 8i64 }), - ("EjectReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "PrinterInstruction".into(), value : 7i64 }), - ("ExecuteRecipe".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 2i64 }), - ("JumpIfNextInvalid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 4i64 }), - ("JumpToAddress".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 5i64 }), - ("MissingRecipeReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 9i64 }), - ("StackPointer".into(), Instruction { description : - "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 1i64 }), - ("WaitUntilNextValid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 3i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::ReadWrite, - memory_size: 64u32, - }, - } - .into(), - ), - ( - 1441767298i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureHydroponicsStation".into(), - prefab_hash: 1441767298i32, - desc: "".into(), - name: "Hydroponics Station".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Efficiency, MemoryAccess::Read), - (LogicSlotType::Health, MemoryAccess::Read), - (LogicSlotType::Growth, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::Mature, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Efficiency, MemoryAccess::Read), - (LogicSlotType::Health, MemoryAccess::Read), - (LogicSlotType::Growth, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::Mature, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Efficiency, MemoryAccess::Read), - (LogicSlotType::Health, MemoryAccess::Read), - (LogicSlotType::Growth, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::Mature, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Efficiency, MemoryAccess::Read), - (LogicSlotType::Health, MemoryAccess::Read), - (LogicSlotType::Growth, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::Mature, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Efficiency, MemoryAccess::Read), - (LogicSlotType::Health, MemoryAccess::Read), - (LogicSlotType::Growth, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::Mature, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Efficiency, MemoryAccess::Read), - (LogicSlotType::Health, MemoryAccess::Read), - (LogicSlotType::Growth, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::Mature, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Efficiency, MemoryAccess::Read), - (LogicSlotType::Health, MemoryAccess::Read), - (LogicSlotType::Growth, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::Mature, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Efficiency, MemoryAccess::Read), - (LogicSlotType::Health, MemoryAccess::Read), - (LogicSlotType::Growth, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::Mature, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { - name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : - "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" - .into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ - : Class::Plant }, SlotInfo { name : "Plant".into(), typ : - Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant - }, SlotInfo { name : "Plant".into(), typ : Class::Plant } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1464854517i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureHydroponicsTray".into(), - prefab_hash: 1464854517i32, - desc: "The Agrizero hydroponics tray is the ideal vessel for growing a range of plantlife. It must be supplied with water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie." - .into(), - name: "Hydroponics Tray".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { - name : "Fertiliser".into(), typ : Class::Plant } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1841632400i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureHydroponicsTrayData".into(), - prefab_hash: -1841632400i32, - desc: "The Agrizero hydroponics device is the ideal vessel for growing a range of plantlife. It must be supplied with Water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie. Note that unlike the Hydroponics Tray, these cannot be placed consecutively as they are considered devices rather than pure pipes. They do, however, allow data interrogation for logic systems." - .into(), - name: "Hydroponics Device".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Efficiency, MemoryAccess::Read), - (LogicSlotType::Health, MemoryAccess::Read), - (LogicSlotType::Growth, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::Mature, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Seeding, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { - name : "Fertiliser".into(), typ : Class::Plant } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 443849486i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureIceCrusher".into(), - prefab_hash: 443849486i32, - desc: "The Recurso KoolAuger converts various ices into their respective gases and liquids.\nA remarkably smart and compact sublimation-melting unit, it produces gas or liquid depending on the ice being processed. The upper outlet is gas, the lower for liquid, and while you can attach any pipe you like to either outlet, it will only function if the correct network is attached. It will also only pass gas or liquid into a network if it is powered and turned on.\nIf the KoolAuger is full, it will not accept any further ice until the gas or liquid contents is drained. In this state, it will flash a yellow error state on the activation switch." - .into(), - name: "Ice Crusher".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Import".into(), typ : Class::Ore }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1005491513i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureIgniter".into(), - prefab_hash: 1005491513i32, - desc: "It gets the party started. Especially if that party is an explosive gas mixture." - .into(), - name: "Igniter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1693382705i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInLineTankGas1x1".into(), - prefab_hash: -1693382705i32, - desc: "A small expansion tank that increases the volume of a pipe network." - .into(), - name: "In-Line Tank Small Gas".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 35149429i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInLineTankGas1x2".into(), - prefab_hash: 35149429i32, - desc: "A small expansion tank that increases the volume of a pipe network." - .into(), - name: "In-Line Tank Gas".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 543645499i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInLineTankLiquid1x1".into(), - prefab_hash: 543645499i32, - desc: "A small expansion tank that increases the volume of a pipe network." - .into(), - name: "In-Line Tank Small Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -1183969663i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInLineTankLiquid1x2".into(), - prefab_hash: -1183969663i32, - desc: "A small expansion tank that increases the volume of a pipe network." - .into(), - name: "In-Line Tank Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1818267386i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedInLineTankGas1x1".into(), - prefab_hash: 1818267386i32, - desc: "".into(), - name: "Insulated In-Line Tank Small Gas".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -177610944i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedInLineTankGas1x2".into(), - prefab_hash: -177610944i32, - desc: "".into(), - name: "Insulated In-Line Tank Gas".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -813426145i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedInLineTankLiquid1x1".into(), - prefab_hash: -813426145i32, - desc: "".into(), - name: "Insulated In-Line Tank Small Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1452100517i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedInLineTankLiquid1x2".into(), - prefab_hash: 1452100517i32, - desc: "".into(), - name: "Insulated In-Line Tank Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -1967711059i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeCorner".into(), - prefab_hash: -1967711059i32, - desc: "Insulated pipes greatly reduce heat loss from gases stored in them." - .into(), - name: "Insulated Pipe (Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -92778058i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeCrossJunction".into(), - prefab_hash: -92778058i32, - desc: "Insulated pipes greatly reduce heat loss from gases stored in them." - .into(), - name: "Insulated Pipe (Cross Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1328210035i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeCrossJunction3".into(), - prefab_hash: 1328210035i32, - desc: "Insulated pipes greatly reduce heat loss from gases stored in them." - .into(), - name: "Insulated Pipe (3-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -783387184i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeCrossJunction4".into(), - prefab_hash: -783387184i32, - desc: "Insulated pipes greatly reduce heat loss from gases stored in them." - .into(), - name: "Insulated Pipe (4-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -1505147578i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeCrossJunction5".into(), - prefab_hash: -1505147578i32, - desc: "Insulated pipes greatly reduce heat loss from gases stored in them." - .into(), - name: "Insulated Pipe (5-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1061164284i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeCrossJunction6".into(), - prefab_hash: 1061164284i32, - desc: "Insulated pipes greatly reduce heat loss from gases stored in them." - .into(), - name: "Insulated Pipe (6-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1713710802i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeLiquidCorner".into(), - prefab_hash: 1713710802i32, - desc: "Liquid piping with very low temperature loss or gain.".into(), - name: "Insulated Liquid Pipe (Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1926651727i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeLiquidCrossJunction".into(), - prefab_hash: 1926651727i32, - desc: "Liquid piping with very low temperature loss or gain.".into(), - name: "Insulated Liquid Pipe (3-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 363303270i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeLiquidCrossJunction4".into(), - prefab_hash: 363303270i32, - desc: "Liquid piping with very low temperature loss or gain.".into(), - name: "Insulated Liquid Pipe (4-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1654694384i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeLiquidCrossJunction5".into(), - prefab_hash: 1654694384i32, - desc: "Liquid piping with very low temperature loss or gain.".into(), - name: "Insulated Liquid Pipe (5-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -72748982i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeLiquidCrossJunction6".into(), - prefab_hash: -72748982i32, - desc: "Liquid piping with very low temperature loss or gain.".into(), - name: "Insulated Liquid Pipe (6-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 295678685i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeLiquidStraight".into(), - prefab_hash: 295678685i32, - desc: "Liquid piping with very low temperature loss or gain.".into(), - name: "Insulated Liquid Pipe (Straight)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -532384855i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeLiquidTJunction".into(), - prefab_hash: -532384855i32, - desc: "Liquid piping with very low temperature loss or gain.".into(), - name: "Insulated Liquid Pipe (T Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 2134172356i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeStraight".into(), - prefab_hash: 2134172356i32, - desc: "Insulated pipes greatly reduce heat loss from gases stored in them." - .into(), - name: "Insulated Pipe (Straight)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -2076086215i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedPipeTJunction".into(), - prefab_hash: -2076086215i32, - desc: "Insulated pipes greatly reduce heat loss from gases stored in them." - .into(), - name: "Insulated Pipe (T Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -31273349i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedTankConnector".into(), - prefab_hash: -31273349i32, - desc: "".into(), - name: "Insulated Tank Connector".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1602030414i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInsulatedTankConnectorLiquid".into(), - prefab_hash: -1602030414i32, - desc: "".into(), - name: "Insulated Tank Connector Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Portable Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -2096421875i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInteriorDoorGlass".into(), - prefab_hash: -2096421875i32, - desc: "0.Operate\n1.Logic".into(), - name: "Interior Door Glass".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 847461335i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInteriorDoorPadded".into(), - prefab_hash: 847461335i32, - desc: "0.Operate\n1.Logic".into(), - name: "Interior Door Padded".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1981698201i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInteriorDoorPaddedThin".into(), - prefab_hash: 1981698201i32, - desc: "0.Operate\n1.Logic".into(), - name: "Interior Door Padded Thin".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1182923101i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureInteriorDoorTriangle".into(), - prefab_hash: -1182923101i32, - desc: "0.Operate\n1.Logic".into(), - name: "Interior Door Triangle".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -828056979i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureKlaxon".into(), - prefab_hash: -828056979i32, - desc: "Klaxons allow you to play over 50 announcements and sounds, depending on your Logic set-up. Set the mode to select the output." - .into(), - name: "Klaxon Speaker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::SoundAlert, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "None".into()), (1u32, "Alarm2".into()), (2u32, - "Alarm3".into()), (3u32, "Alarm4".into()), (4u32, "Alarm5" - .into()), (5u32, "Alarm6".into()), (6u32, "Alarm7".into()), - (7u32, "Music1".into()), (8u32, "Music2".into()), (9u32, - "Music3".into()), (10u32, "Alarm8".into()), (11u32, "Alarm9" - .into()), (12u32, "Alarm10".into()), (13u32, "Alarm11" - .into()), (14u32, "Alarm12".into()), (15u32, "Danger" - .into()), (16u32, "Warning".into()), (17u32, "Alert".into()), - (18u32, "StormIncoming".into()), (19u32, "IntruderAlert" - .into()), (20u32, "Depressurising".into()), (21u32, - "Pressurising".into()), (22u32, "AirlockCycling".into()), - (23u32, "PowerLow".into()), (24u32, "SystemFailure".into()), - (25u32, "Welcome".into()), (26u32, "MalfunctionDetected" - .into()), (27u32, "HaltWhoGoesThere".into()), (28u32, - "FireFireFire".into()), (29u32, "One".into()), (30u32, "Two" - .into()), (31u32, "Three".into()), (32u32, "Four".into()), - (33u32, "Five".into()), (34u32, "Floor".into()), (35u32, - "RocketLaunching".into()), (36u32, "LiftOff".into()), (37u32, - "TraderIncoming".into()), (38u32, "TraderLanded".into()), - (39u32, "PressureHigh".into()), (40u32, "PressureLow" - .into()), (41u32, "TemperatureHigh".into()), (42u32, - "TemperatureLow".into()), (43u32, "PollutantsDetected" - .into()), (44u32, "HighCarbonDioxide".into()), (45u32, - "Alarm1".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -415420281i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLadder".into(), - prefab_hash: -415420281i32, - desc: "".into(), - name: "Ladder".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1541734993i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLadderEnd".into(), - prefab_hash: 1541734993i32, - desc: "".into(), - name: "Ladder End".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1230658883i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLargeDirectHeatExchangeGastoGas".into(), - prefab_hash: -1230658883i32, - desc: "Direct Heat Exchangers equalize the temperature of the two input networks." - .into(), - name: "Large Direct Heat Exchanger - Gas + Gas".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1412338038i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLargeDirectHeatExchangeGastoLiquid".into(), - prefab_hash: 1412338038i32, - desc: "Direct Heat Exchangers equalize the temperature of the two input networks." - .into(), - name: "Large Direct Heat Exchanger - Gas + Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 792686502i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLargeDirectHeatExchangeLiquidtoLiquid".into(), - prefab_hash: 792686502i32, - desc: "Direct Heat Exchangers equalize the temperature of the two input networks." - .into(), - name: "Large Direct Heat Exchange - Liquid + Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -566775170i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLargeExtendableRadiator".into(), - prefab_hash: -566775170i32, - desc: "Omptimised for radiating heat in vacuum and low pressure environments. If pointed at the sun it will heat its contents rapidly via solar heating. The panels can fold away to stop all heat radiation/solar heating and protect them from storms." - .into(), - name: "Large Extendable Radiator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.02f32, - radiation_factor: 2f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1351081801i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLargeHangerDoor".into(), - prefab_hash: -1351081801i32, - desc: "1 x 3 modular door piece for building hangar doors.".into(), - name: "Large Hangar Door".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1913391845i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLargeSatelliteDish".into(), - prefab_hash: 1913391845i32, - desc: "This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic." - .into(), - name: "Large Satellite Dish".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::SignalStrength, MemoryAccess::Read), - (LogicType::SignalId, MemoryAccess::Read), - (LogicType::InterrogationProgress, MemoryAccess::Read), - (LogicType::TargetPadIndex, MemoryAccess::ReadWrite), - (LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ, - MemoryAccess::Read), (LogicType::MinimumWattsToContact, - MemoryAccess::Read), (LogicType::WattsReachingContact, - MemoryAccess::Read), (LogicType::ContactTypeId, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::BestContactFilter, - MemoryAccess::ReadWrite), (LogicType::NameHash, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -558953231i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLaunchMount".into(), - prefab_hash: -558953231i32, - desc: "The first piece to place whern building a rocket. Rockets can be constructed and/or landed here. Each Launch Mount will be allocated a slot on the Space Map and assigned a Location Code." - .into(), - name: "Launch Mount".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 797794350i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLightLong".into(), - prefab_hash: 797794350i32, - desc: "".into(), - name: "Wall Light (Long)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1847265835i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLightLongAngled".into(), - prefab_hash: 1847265835i32, - desc: "".into(), - name: "Wall Light (Long Angled)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 555215790i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLightLongWide".into(), - prefab_hash: 555215790i32, - desc: "".into(), - name: "Wall Light (Long Wide)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1514476632i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLightRound".into(), - prefab_hash: 1514476632i32, - desc: "Description coming.".into(), - name: "Light Round".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1592905386i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLightRoundAngled".into(), - prefab_hash: 1592905386i32, - desc: "Description coming.".into(), - name: "Light Round (Angled)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1436121888i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLightRoundSmall".into(), - prefab_hash: 1436121888i32, - desc: "Description coming.".into(), - name: "Light Round (Small)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1687692899i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidDrain".into(), - prefab_hash: 1687692899i32, - desc: "When connected to power and activated, it pumps liquid from a liquid network into the world." - .into(), - name: "Active Liquid Outlet".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2113838091i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidPipeAnalyzer".into(), - prefab_hash: -2113838091i32, - desc: "".into(), - name: "Liquid Pipe Analyzer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -287495560i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidPipeHeater".into(), - prefab_hash: -287495560i32, - desc: "Adds 1000 joules of heat per tick to the contents of your pipe network." - .into(), - name: "Pipe Heater (Liquid)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -782453061i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidPipeOneWayValve".into(), - prefab_hash: -782453061i32, - desc: "The one way valve moves liquid in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.." - .into(), - name: "One Way Valve (Liquid)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 2072805863i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidPipeRadiator".into(), - prefab_hash: 2072805863i32, - desc: "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added to the liquid within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the liquid in question. Adding multiple radiators will speed up heat transfer." - .into(), - name: "Liquid Pipe Convection Radiator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 1f32, - radiation_factor: 0.75f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 482248766i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidPressureRegulator".into(), - prefab_hash: 482248766i32, - desc: "Regulates the volume ratio of liquid in the output Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty." - .into(), - name: "Liquid Volume Regulator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1098900430i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidTankBig".into(), - prefab_hash: 1098900430i32, - desc: "".into(), - name: "Liquid Tank Big".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1430440215i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidTankBigInsulated".into(), - prefab_hash: -1430440215i32, - desc: "".into(), - name: "Insulated Liquid Tank Big".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1988118157i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidTankSmall".into(), - prefab_hash: 1988118157i32, - desc: "".into(), - name: "Liquid Tank Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 608607718i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidTankSmallInsulated".into(), - prefab_hash: 608607718i32, - desc: "".into(), - name: "Insulated Liquid Tank Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1691898022i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidTankStorage".into(), - prefab_hash: 1691898022i32, - desc: "When connected to a liquid pipe network, the tank storage unit allows you to refill a Liquid Canister, as well as read various atmospheric data from the Gas Canister. It will not accept gas canisters." - .into(), - name: "Liquid Tank Storage".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Quantity, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Liquid Canister".into(), typ : - Class::LiquidCanister } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1051805505i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidTurboVolumePump".into(), - prefab_hash: -1051805505i32, - desc: "Shifts 10 times more liquid than a basic Volume Pump, with a mode that can be set to flow in either direction." - .into(), - name: "Turbo Volume Pump (Liquid)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Right".into()), (1u32, "Left".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1734723642i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidUmbilicalFemale".into(), - prefab_hash: 1734723642i32, - desc: "".into(), - name: "Umbilical Socket (Liquid)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1220870319i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidUmbilicalFemaleSide".into(), - prefab_hash: 1220870319i32, - desc: "".into(), - name: "Umbilical Socket Angle (Liquid)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1798420047i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidUmbilicalMale".into(), - prefab_hash: -1798420047i32, - desc: "0.Left\n1.Center\n2.Right".into(), - name: "Umbilical (Liquid)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), - (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Left".into()), (1u32, "Center".into()), (2u32, - "Right".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1849974453i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidValve".into(), - prefab_hash: 1849974453i32, - desc: "".into(), - name: "Liquid Valve".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -454028979i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLiquidVolumePump".into(), - prefab_hash: -454028979i32, - desc: "".into(), - name: "Liquid Volume Pump".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -647164662i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLockerSmall".into(), - prefab_hash: -647164662i32, - desc: "".into(), - name: "Locker (Small)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 264413729i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicBatchReader".into(), - prefab_hash: 264413729i32, - desc: "".into(), - name: "Batch Reader".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 436888930i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicBatchSlotReader".into(), - prefab_hash: 436888930i32, - desc: "".into(), - name: "Batch Slot Reader".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1415443359i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicBatchWriter".into(), - prefab_hash: 1415443359i32, - desc: "".into(), - name: "Batch Writer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ForceWrite, MemoryAccess::Write), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 491845673i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicButton".into(), - prefab_hash: 491845673i32, - desc: "".into(), - name: "Button".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1489728908i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicCompare".into(), - prefab_hash: -1489728908i32, - desc: "0.Equals\n1.Greater\n2.Less\n3.NotEquals".into(), - name: "Logic Compare".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, - "Less".into()), (3u32, "NotEquals".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 554524804i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicDial".into(), - prefab_hash: 554524804i32, - desc: "An assignable dial with up to 1000 modes.".into(), - name: "Dial".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1942143074i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicGate".into(), - prefab_hash: 1942143074i32, - desc: "A logic device that performs a logical operation on one or more binary inputs that produces a single binary output. An input greater than zero is considered true for operations." - .into(), - name: "Logic Gate".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "AND".into()), (1u32, "OR".into()), (2u32, "XOR" - .into()), (3u32, "NAND".into()), (4u32, "NOR".into()), (5u32, - "XNOR".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 2077593121i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicHashGen".into(), - prefab_hash: 2077593121i32, - desc: "".into(), - name: "Logic Hash Generator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1657691323i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicMath".into(), - prefab_hash: 1657691323i32, - desc: "0.Add\n1.Subtract\n2.Multiply\n3.Divide\n4.Mod\n5.Atan2\n6.Pow\n7.Log" - .into(), - name: "Logic Math".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Add".into()), (1u32, "Subtract".into()), (2u32, - "Multiply".into()), (3u32, "Divide".into()), (4u32, "Mod" - .into()), (5u32, "Atan2".into()), (6u32, "Pow".into()), - (7u32, "Log".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1160020195i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicMathUnary".into(), - prefab_hash: -1160020195i32, - desc: "0.Ceil\n1.Floor\n2.Abs\n3.Log\n4.Exp\n5.Round\n6.Rand\n7.Sqrt\n8.Sin\n9.Cos\n10.Tan\n11.Asin\n12.Acos\n13.Atan\n14.Not" - .into(), - name: "Math Unary".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Ceil".into()), (1u32, "Floor".into()), (2u32, "Abs" - .into()), (3u32, "Log".into()), (4u32, "Exp".into()), (5u32, - "Round".into()), (6u32, "Rand".into()), (7u32, "Sqrt" - .into()), (8u32, "Sin".into()), (9u32, "Cos".into()), (10u32, - "Tan".into()), (11u32, "Asin".into()), (12u32, "Acos" - .into()), (13u32, "Atan".into()), (14u32, "Not".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -851746783i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicMemory".into(), - prefab_hash: -851746783i32, - desc: "".into(), - name: "Logic Memory".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 929022276i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicMinMax".into(), - prefab_hash: 929022276i32, - desc: "0.Greater\n1.Less".into(), - name: "Logic Min/Max".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Greater".into()), (1u32, "Less".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 2096189278i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicMirror".into(), - prefab_hash: 2096189278i32, - desc: "".into(), - name: "Logic Mirror".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![].into_iter().collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -345383640i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicReader".into(), - prefab_hash: -345383640i32, - desc: "".into(), - name: "Logic Reader".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -124308857i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicReagentReader".into(), - prefab_hash: -124308857i32, - desc: "".into(), - name: "Reagent Reader".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 876108549i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicRocketDownlink".into(), - prefab_hash: 876108549i32, - desc: "".into(), - name: "Logic Rocket Downlink".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 546002924i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicRocketUplink".into(), - prefab_hash: 546002924i32, - desc: "".into(), - name: "Logic Uplink".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1822736084i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicSelect".into(), - prefab_hash: 1822736084i32, - desc: "0.Equals\n1.Greater\n2.Less\n3.NotEquals".into(), - name: "Logic Select".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, - "Less".into()), (3u32, "NotEquals".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -767867194i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicSlotReader".into(), - prefab_hash: -767867194i32, - desc: "".into(), - name: "Slot Reader".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 873418029i32, - StructureLogicDeviceMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicSorter".into(), - prefab_hash: 873418029i32, - desc: "Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the Import Slot, the stack is checked and if result is true the thing is moved to the Export 2 slot, otherwise it is moved to the Export slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true." - .into(), - name: "Logic Sorter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "All".into()), (1u32, "Any".into()), (2u32, "None" - .into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : - "Export 2".into(), typ : Class::None }, SlotInfo { name : "Data Disk" - .into(), typ : Class::DataDisk } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output2 }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - memory: MemoryInfo { - instructions: Some( - vec![ - ("FilterPrefabHashEquals".into(), Instruction { description : - "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "SorterInstruction".into(), value : 1i64 }), - ("FilterPrefabHashNotEquals".into(), Instruction { - description : - "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "SorterInstruction".into(), value : 2i64 }), - ("FilterQuantityCompare".into(), Instruction { description : - "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | QUANTITY | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |" - .into(), typ : "SorterInstruction".into(), value : 5i64 }), - ("FilterSlotTypeCompare".into(), Instruction { description : - "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SLOT_TYPE | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |" - .into(), typ : "SorterInstruction".into(), value : 4i64 }), - ("FilterSortingClassCompare".into(), Instruction { - description : - "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SORTING_CLASS | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |" - .into(), typ : "SorterInstruction".into(), value : 3i64 }), - ("LimitNextExecutionByCount".into(), Instruction { - description : - "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | COUNT | UINT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "SorterInstruction".into(), value : 6i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::ReadWrite, - memory_size: 32u32, - }, - } - .into(), - ), - ( - 1220484876i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicSwitch".into(), - prefab_hash: 1220484876i32, - desc: "".into(), - name: "Lever".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 321604921i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicSwitch2".into(), - prefab_hash: 321604921i32, - desc: "".into(), - name: "Switch".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -693235651i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicTransmitter".into(), - prefab_hash: -693235651i32, - desc: "Connects to Logic Transmitter" - .into(), - name: "Logic Transmitter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![].into_iter().collect(), - modes: Some( - vec![(0u32, "Passive".into()), (1u32, "Active".into())] - .into_iter() - .collect(), - ), - transmission_receiver: true, - wireless_logic: true, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1326019434i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicWriter".into(), - prefab_hash: -1326019434i32, - desc: "".into(), - name: "Logic Writer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ForceWrite, MemoryAccess::Write), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1321250424i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureLogicWriterSwitch".into(), - prefab_hash: -1321250424i32, - desc: "".into(), - name: "Logic Writer Switch".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ForceWrite, MemoryAccess::Write), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1808154199i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureManualHatch".into(), - prefab_hash: -1808154199i32, - desc: "Can be welded using a Welding Torch or Arc Welder to lock it in the current state. Use the welder again to unlock." - .into(), - name: "Manual Hatch".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1918215845i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureMediumConvectionRadiator".into(), - prefab_hash: -1918215845i32, - desc: "A stand-alone radiator unit optimized for exchanging heat with its surrounding atmosphere." - .into(), - name: "Medium Convection Radiator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 1.25f32, - radiation_factor: 0.4f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1169014183i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureMediumConvectionRadiatorLiquid".into(), - prefab_hash: -1169014183i32, - desc: "A stand-alone liquid radiator unit optimized for exchanging heat with its surrounding atmosphere." - .into(), - name: "Medium Convection Radiator Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 1.25f32, - radiation_factor: 0.4f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -566348148i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureMediumHangerDoor".into(), - prefab_hash: -566348148i32, - desc: "1 x 2 modular door piece for building hangar doors.".into(), - name: "Medium Hangar Door".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -975966237i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureMediumRadiator".into(), - prefab_hash: -975966237i32, - desc: "A stand-alone radiator unit optimized for radiating heat in vacuums." - .into(), - name: "Medium Radiator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.2f32, - radiation_factor: 4f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1141760613i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureMediumRadiatorLiquid".into(), - prefab_hash: -1141760613i32, - desc: "A stand-alone liquid radiator unit optimized for radiating heat in vacuums." - .into(), - name: "Medium Radiator Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.2f32, - radiation_factor: 4f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1093860567i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureMediumRocketGasFuelTank".into(), - prefab_hash: -1093860567i32, - desc: "".into(), - name: "Gas Capsule Tank Medium".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1143639539i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureMediumRocketLiquidFuelTank".into(), - prefab_hash: 1143639539i32, - desc: "".into(), - name: "Liquid Capsule Tank Medium".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1713470563i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureMotionSensor".into(), - prefab_hash: -1713470563i32, - desc: "Originally developed to monitor dance marathons, the motion sensor can also be connected to Logic systems for security purposes, automatic lighting, doors and various other applications.\nThe sensor activates whenever a player enters the grid it is placed on." - .into(), - name: "Motion Sensor".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Activate, MemoryAccess::ReadWrite), - (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1898243702i32, - StructureCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "StructureNitrolyzer".into(), - prefab_hash: 1898243702i32, - desc: "This device is used to create Nitrous Oxide from Oxygen, Nitrogen, and a large amount of energy. The process does not completely transform all the available gas at once, so the output is a mix of all three gasses, which may need further processing. More NOS will be created, if the gas inside the machine is close to a 1/1 ratio of Oxygen to Nitrogen. The second gas input line in optional, and not required if the gas is pre mixed." - .into(), - name: "Nitrolyzer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::PressureInput, MemoryAccess::Read), - (LogicType::TemperatureInput, MemoryAccess::Read), - (LogicType::RatioOxygenInput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioNitrogenInput, MemoryAccess::Read), - (LogicType::RatioPollutantInput, MemoryAccess::Read), - (LogicType::RatioVolatilesInput, MemoryAccess::Read), - (LogicType::RatioWaterInput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), - (LogicType::TotalMolesInput, MemoryAccess::Read), - (LogicType::PressureInput2, MemoryAccess::Read), - (LogicType::TemperatureInput2, MemoryAccess::Read), - (LogicType::RatioOxygenInput2, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideInput2, MemoryAccess::Read), - (LogicType::RatioNitrogenInput2, MemoryAccess::Read), - (LogicType::RatioPollutantInput2, MemoryAccess::Read), - (LogicType::RatioVolatilesInput2, MemoryAccess::Read), - (LogicType::RatioWaterInput2, MemoryAccess::Read), - (LogicType::RatioNitrousOxideInput2, MemoryAccess::Read), - (LogicType::TotalMolesInput2, MemoryAccess::Read), - (LogicType::PressureOutput, MemoryAccess::Read), - (LogicType::TemperatureOutput, MemoryAccess::Read), - (LogicType::RatioOxygenOutput, MemoryAccess::Read), - (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioPollutantOutput, MemoryAccess::Read), - (LogicType::RatioVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioWaterOutput, MemoryAccess::Read), - (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), - (LogicType::TotalMolesOutput, MemoryAccess::Read), - (LogicType::CombustionInput, MemoryAccess::Read), - (LogicType::CombustionInput2, MemoryAccess::Read), - (LogicType::CombustionOutput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenInput2, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenInput2, MemoryAccess::Read), - (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesInput2, MemoryAccess::Read), - (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioSteamInput, MemoryAccess::Read), - (LogicType::RatioSteamInput2, MemoryAccess::Read), - (LogicType::RatioSteamOutput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideInput2, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantInput2, MemoryAccess::Read), - (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideInput2, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Programmable Chip".into(), typ : - Class::ProgrammableChip } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input2 }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: Some(2u32), - has_activate_state: true, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 322782515i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureOccupancySensor".into(), - prefab_hash: 322782515i32, - desc: "Will be triggered if there is a player in the same room as the sensor. The quantity variable will show the number of players. You can use configure it to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet. This sensor only works when placed in a room." - .into(), - name: "Occupancy Sensor".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Activate, MemoryAccess::Read), (LogicType::Quantity, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1794932560i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureOverheadShortCornerLocker".into(), - prefab_hash: -1794932560i32, - desc: "".into(), - name: "Overhead Corner Locker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1468249454i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureOverheadShortLocker".into(), - prefab_hash: 1468249454i32, - desc: "".into(), - name: "Overhead Locker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 2066977095i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePassiveLargeRadiatorGas".into(), - prefab_hash: 2066977095i32, - desc: "Has been replaced by Medium Convection Radiator." - .into(), - name: "Medium Convection Radiator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 1f32, - radiation_factor: 0.4f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 24786172i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePassiveLargeRadiatorLiquid".into(), - prefab_hash: 24786172i32, - desc: "Has been replaced by Medium Convection Radiator Liquid." - .into(), - name: "Medium Convection Radiator Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 1f32, - radiation_factor: 0.4f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1812364811i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePassiveLiquidDrain".into(), - prefab_hash: 1812364811i32, - desc: "Moves liquids from a pipe network to the world atmosphere." - .into(), - name: "Passive Liquid Drain".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 335498166i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePassiveVent".into(), - prefab_hash: 335498166i32, - desc: "Passive vents allow gases to move into and out of pipe networks, which are closed systems unless connected to a device or structure. Passive vents are not powered, merely an aperture, essentially turning an enclosed space into part of the pipe network. " - .into(), - name: "Passive Vent".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1363077139i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePassiveVentInsulated".into(), - prefab_hash: 1363077139i32, - desc: "".into(), - name: "Insulated Passive Vent".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -1674187440i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePassthroughHeatExchangerGasToGas".into(), - prefab_hash: -1674187440i32, - desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures." - .into(), - name: "CounterFlow Heat Exchanger - Gas + Gas".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input2 }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1928991265i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePassthroughHeatExchangerGasToLiquid".into(), - prefab_hash: 1928991265i32, - desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures." - .into(), - name: "CounterFlow Heat Exchanger - Gas + Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1472829583i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePassthroughHeatExchangerLiquidToLiquid" - .into(), - prefab_hash: -1472829583i32, - desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exchange of temperatures." - .into(), - name: "CounterFlow Heat Exchanger - Liquid + Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1434523206i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThickLandscapeLarge".into(), - prefab_hash: -1434523206i32, - desc: "".into(), - name: "Picture Frame Thick Landscape Large".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2041566697i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThickLandscapeSmall".into(), - prefab_hash: -2041566697i32, - desc: "".into(), - name: "Picture Frame Thick Landscape Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 950004659i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThickMountLandscapeLarge".into(), - prefab_hash: 950004659i32, - desc: "".into(), - name: "Picture Frame Thick Landscape Large".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 347154462i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThickMountLandscapeSmall".into(), - prefab_hash: 347154462i32, - desc: "".into(), - name: "Picture Frame Thick Landscape Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1459641358i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThickMountPortraitLarge".into(), - prefab_hash: -1459641358i32, - desc: "".into(), - name: "Picture Frame Thick Mount Portrait Large".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2066653089i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThickMountPortraitSmall".into(), - prefab_hash: -2066653089i32, - desc: "".into(), - name: "Picture Frame Thick Mount Portrait Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1686949570i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThickPortraitLarge".into(), - prefab_hash: -1686949570i32, - desc: "".into(), - name: "Picture Frame Thick Portrait Large".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1218579821i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThickPortraitSmall".into(), - prefab_hash: -1218579821i32, - desc: "".into(), - name: "Picture Frame Thick Portrait Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1418288625i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThinLandscapeLarge".into(), - prefab_hash: -1418288625i32, - desc: "".into(), - name: "Picture Frame Thin Landscape Large".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2024250974i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThinLandscapeSmall".into(), - prefab_hash: -2024250974i32, - desc: "".into(), - name: "Picture Frame Thin Landscape Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1146760430i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThinMountLandscapeLarge".into(), - prefab_hash: -1146760430i32, - desc: "".into(), - name: "Picture Frame Thin Landscape Large".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1752493889i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThinMountLandscapeSmall".into(), - prefab_hash: -1752493889i32, - desc: "".into(), - name: "Picture Frame Thin Landscape Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1094895077i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThinMountPortraitLarge".into(), - prefab_hash: 1094895077i32, - desc: "".into(), - name: "Picture Frame Thin Portrait Large".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1835796040i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThinMountPortraitSmall".into(), - prefab_hash: 1835796040i32, - desc: "".into(), - name: "Picture Frame Thin Portrait Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1212777087i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThinPortraitLarge".into(), - prefab_hash: 1212777087i32, - desc: "".into(), - name: "Picture Frame Thin Portrait Large".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1684488658i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePictureFrameThinPortraitSmall".into(), - prefab_hash: 1684488658i32, - desc: "".into(), - name: "Picture Frame Thin Portrait Small".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 435685051i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeAnalysizer".into(), - prefab_hash: 435685051i32, - desc: "Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {ExMin engineer, the pipe analyzer is essentially a more advanced version of the Pipe Meter.\nDisplaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a Console or Computer via a {Logic system." - .into(), - name: "Pipe Analyzer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, - MemoryAccess::Read), (LogicType::RatioNitrousOxide, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1785673561i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeCorner".into(), - prefab_hash: -1785673561i32, - desc: "You can upgrade this pipe to an Insulated Pipe (Corner) using an Kit (Insulated Pipe) and a Wrench." - .into(), - name: "Pipe (Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 465816159i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeCowl".into(), - prefab_hash: 465816159i32, - desc: "".into(), - name: "Pipe Cowl".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -1405295588i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeCrossJunction".into(), - prefab_hash: -1405295588i32, - desc: "You can upgrade this pipe to an Insulated Pipe (Cross Junction) using an Kit (Insulated Pipe) and a Wrench." - .into(), - name: "Pipe (Cross Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 2038427184i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeCrossJunction3".into(), - prefab_hash: 2038427184i32, - desc: "You can upgrade this pipe to an Insulated Pipe (3-Way Junction) using an Kit (Insulated Pipe) and a Wrench." - .into(), - name: "Pipe (3-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -417629293i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeCrossJunction4".into(), - prefab_hash: -417629293i32, - desc: "You can upgrade this pipe to an Insulated Pipe (4-Way Junction) using an Kit (Insulated Pipe) and a Wrench." - .into(), - name: "Pipe (4-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -1877193979i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeCrossJunction5".into(), - prefab_hash: -1877193979i32, - desc: "You can upgrade this pipe to an Insulated Pipe (5-Way Junction) using an Kit (Insulated Pipe) and a Wrench." - .into(), - name: "Pipe (5-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 152378047i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeCrossJunction6".into(), - prefab_hash: 152378047i32, - desc: "You can upgrade this pipe to an Insulated Pipe (6-Way Junction) using an Kit (Insulated Pipe) and a Wrench." - .into(), - name: "Pipe (6-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -419758574i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeHeater".into(), - prefab_hash: -419758574i32, - desc: "Adds 1000 joules of heat per tick to the contents of your pipe network." - .into(), - name: "Pipe Heater (Gas)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1286441942i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeIgniter".into(), - prefab_hash: 1286441942i32, - desc: "Ignites the atmosphere inside the attached pipe network." - .into(), - name: "Pipe Igniter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2068497073i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeInsulatedLiquidCrossJunction".into(), - prefab_hash: -2068497073i32, - desc: "Liquid piping with very low temperature loss or gain.".into(), - name: "Insulated Liquid Pipe (Cross Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -999721119i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeLabel".into(), - prefab_hash: -999721119i32, - desc: "As its perspicacious name suggests, the pipe label is designed to be attached to a straight stretch of pipe. Users can then label the label with the Labeller." - .into(), - name: "Pipe Label".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1856720921i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeLiquidCorner".into(), - prefab_hash: -1856720921i32, - desc: "You can upgrade this pipe to an Insulated Liquid Pipe (Corner) using an Kit (Insulated Liquid Pipe) and a Wrench." - .into(), - name: "Liquid Pipe (Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1848735691i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeLiquidCrossJunction".into(), - prefab_hash: 1848735691i32, - desc: "You can upgrade this pipe to an Insulated Liquid Pipe (Cross Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." - .into(), - name: "Liquid Pipe (Cross Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1628087508i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeLiquidCrossJunction3".into(), - prefab_hash: 1628087508i32, - desc: "You can upgrade this pipe to an using an Kit (Insulated Liquid Pipe) and a Wrench." - .into(), - name: "Liquid Pipe (3-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -9555593i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeLiquidCrossJunction4".into(), - prefab_hash: -9555593i32, - desc: "You can upgrade this pipe to an Insulated Liquid Pipe (4-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." - .into(), - name: "Liquid Pipe (4-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -2006384159i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeLiquidCrossJunction5".into(), - prefab_hash: -2006384159i32, - desc: "You can upgrade this pipe to an Insulated Liquid Pipe (5-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." - .into(), - name: "Liquid Pipe (5-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 291524699i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeLiquidCrossJunction6".into(), - prefab_hash: 291524699i32, - desc: "You can upgrade this pipe to an Insulated Liquid Pipe (6-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." - .into(), - name: "Liquid Pipe (6-Way Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 667597982i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeLiquidStraight".into(), - prefab_hash: 667597982i32, - desc: "You can upgrade this pipe to an Insulated Liquid Pipe (Straight) using an Kit (Insulated Liquid Pipe) and a Wrench." - .into(), - name: "Liquid Pipe (Straight)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 262616717i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeLiquidTJunction".into(), - prefab_hash: 262616717i32, - desc: "You can upgrade this pipe to an Insulated Liquid Pipe (T Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." - .into(), - name: "Liquid Pipe (T Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -1798362329i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeMeter".into(), - prefab_hash: -1798362329i32, - desc: "While the Stationeers program has, thus far, inspired little in the way of classical poetry, the following haiku was found etched, ironically, on a piece of pipe wreckage found on Vulcan:\n\"Humble pipe meter\nspeaks the truth, transmits pressure\nwithin any pipe\"" - .into(), - name: "Pipe Meter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1580412404i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeOneWayValve".into(), - prefab_hash: 1580412404i32, - desc: "The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.\n" - .into(), - name: "One Way Valve (Gas)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1305252611i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeOrgan".into(), - prefab_hash: 1305252611i32, - desc: "The pipe organ can be attached to one end of a Kit (Pipe Valve). The length of the pipe after the pipe organ changes the pitch of the note it will play when the valve is opened. Use Logic to open and close the valves to create some custom tunes for your base or an audible warning." - .into(), - name: "Pipe Organ".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - 1696603168i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeRadiator".into(), - prefab_hash: 1696603168i32, - desc: "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added the gas within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the gas in question. Adding multiple radiators will speed up heat transfer." - .into(), - name: "Pipe Convection Radiator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 1f32, - radiation_factor: 0.75f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -399883995i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeRadiatorFlat".into(), - prefab_hash: -399883995i32, - desc: "A pipe mounted radiator optimized for radiating heat in vacuums." - .into(), - name: "Pipe Radiator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.2f32, - radiation_factor: 3f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 2024754523i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeRadiatorFlatLiquid".into(), - prefab_hash: 2024754523i32, - desc: "A liquid pipe mounted radiator optimized for radiating heat in vacuums." - .into(), - name: "Pipe Radiator Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.2f32, - radiation_factor: 3f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 73728932i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeStraight".into(), - prefab_hash: 73728932i32, - desc: "You can upgrade this pipe to an Insulated Pipe (Straight) using an Kit (Insulated Pipe) and a Wrench." - .into(), - name: "Pipe (Straight)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -913817472i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePipeTJunction".into(), - prefab_hash: -913817472i32, - desc: "You can upgrade this pipe to an Insulated Pipe (T Junction) using an Kit (Insulated Pipe) and a Wrench." - .into(), - name: "Pipe (T Junction)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - } - .into(), - ), - ( - -1125641329i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePlanter".into(), - prefab_hash: -1125641329i32, - desc: "A small planter for decorative or hydroponic purposes. Can be connected to Water, or watered manually using a Water Bottle or Liquid Canister (Water)." - .into(), - name: "Planter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { - name : "Plant".into(), typ : Class::Plant } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1559586682i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePlatformLadderOpen".into(), - prefab_hash: 1559586682i32, - desc: "".into(), - name: "Ladder Platform".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 989835703i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePlinth".into(), - prefab_hash: 989835703i32, - desc: "".into(), - name: "Plinth".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![SlotInfo { name : "".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -899013427i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePortablesConnector".into(), - prefab_hash: -899013427i32, - desc: "".into(), - name: "Portables Connector".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "".into(), typ : Class::None }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -782951720i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePowerConnector".into(), - prefab_hash: -782951720i32, - desc: "Attaches a Kit (Portable Generator) to a power network." - .into(), - name: "Power Connector".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Portable Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -65087121i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePowerTransmitter".into(), - prefab_hash: -65087121i32, - desc: "The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter\'s collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output." - .into(), - name: "Microwave Power Transmitter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::PowerPotential, - MemoryAccess::Read), (LogicType::PowerActual, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PositionX, MemoryAccess::Read), - (LogicType::PositionY, MemoryAccess::Read), - (LogicType::PositionZ, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -327468845i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePowerTransmitterOmni".into(), - prefab_hash: -327468845i32, - desc: "".into(), - name: "Power Transmitter Omni".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1195820278i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePowerTransmitterReceiver".into(), - prefab_hash: 1195820278i32, - desc: "The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter\'s collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.Connects to Logic Transmitter" - .into(), - name: "Microwave Power Receiver".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::PowerPotential, - MemoryAccess::Read), (LogicType::PowerActual, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PositionX, MemoryAccess::Read), - (LogicType::PositionY, MemoryAccess::Read), - (LogicType::PositionZ, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: true, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 101488029i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePowerUmbilicalFemale".into(), - prefab_hash: 101488029i32, - desc: "".into(), - name: "Umbilical Socket (Power)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1922506192i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePowerUmbilicalFemaleSide".into(), - prefab_hash: 1922506192i32, - desc: "".into(), - name: "Umbilical Socket Angle (Power)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1529453938i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePowerUmbilicalMale".into(), - prefab_hash: 1529453938i32, - desc: "0.Left\n1.Center\n2.Right".into(), - name: "Umbilical (Power)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), - (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Left".into()), (1u32, "Center".into()), (2u32, - "Right".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 938836756i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePoweredVent".into(), - prefab_hash: 938836756i32, - desc: "Great for moving large quantities of air into a pipe network. Its primary purpose is for the creation of multi-grid airlocks. It can effeciently pull a vacuum on a small to medium sized room." - .into(), - name: "Powered Vent".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::PressureExternal, MemoryAccess::ReadWrite), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Outward".into()), (1u32, "Inward".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -785498334i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePoweredVentLarge".into(), - prefab_hash: -785498334i32, - desc: "For building large scale airlock systems and pressurised hangers, a bigger and bolder version of the Powered Vent that can effeciently pull a vacuum in large room." - .into(), - name: "Powered Vent Large".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::PressureExternal, MemoryAccess::ReadWrite), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Outward".into()), (1u32, "Inward".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 23052817i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePressurantValve".into(), - prefab_hash: 23052817i32, - desc: "Pumps gas into a liquid pipe in order to raise the pressure" - .into(), - name: "Pressurant Valve".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -624011170i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePressureFedGasEngine".into(), - prefab_hash: -624011170i32, - desc: "Inefficient but very powerful, the Pressure Fed Gas Engine moves gas from each of its two inputs based on the pressure of the input pipes. Control the mixing ratio of fuels by tweaking the input pressures to target a 2:1 mix of Volatiles to Oxygen gas. Chilling propellant gasses or using Nitrous Oxide as an oxydizer will result in even higher thrust outputs." - .into(), - name: "Pressure Fed Gas Engine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::Throttle, MemoryAccess::ReadWrite), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::PassedMoles, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input2 }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 379750958i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePressureFedLiquidEngine".into(), - prefab_hash: 379750958i32, - desc: "Highly efficient and powerful, the Pressure Fed Liquid Engine is a challenging engine to run in a stable configuration. Liquid is pulled from the input into the engine based on the input gas pressure. Some gas is also moved in this process so Stationeers will need to devise a system to maintain a high gas pressure in the liquid input pipe. The second liquid pipe connection is an optional heat-exchanger connection which exchanges heat between the pipes contents and the engine bell, the Setting variable drives the effectiveness of the heat-exchanger." - .into(), - name: "Pressure Fed Liquid Engine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::Throttle, MemoryAccess::ReadWrite), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::PassedMoles, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2008706143i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePressurePlateLarge".into(), - prefab_hash: -2008706143i32, - desc: "".into(), - name: "Trigger Plate (Large)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1269458680i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePressurePlateMedium".into(), - prefab_hash: 1269458680i32, - desc: "".into(), - name: "Trigger Plate (Medium)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1536471028i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePressurePlateSmall".into(), - prefab_hash: -1536471028i32, - desc: "".into(), - name: "Trigger Plate (Small)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 209854039i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePressureRegulator".into(), - prefab_hash: 209854039i32, - desc: "Controlling the flow of gas between two pipe networks, pressure regulators shift gas until a set pressure on the outlet side is achieved, or the gas supply is exhausted. The back pressure regulator, by contrast, will only operate when pressure on the intake side exceeds the set value. With a max pressure of over 20,000kPa, it requires power to operate." - .into(), - name: "Pressure Regulator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 568800213i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureProximitySensor".into(), - prefab_hash: 568800213i32, - desc: "Will be triggered if there is a player in the range of the sensor (as defined by the setting dial). The quantity variable will show the number of players. You can configure the sensor to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet." - .into(), - name: "Proximity Sensor".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Activate, MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Quantity, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2031440019i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePumpedLiquidEngine".into(), - prefab_hash: -2031440019i32, - desc: "Liquid propellants bring greater efficiencies with Pumped Liquid Engine. Two inputs are provided so Stationeers can seperate their fuels, the Setting variable controls the mixing ratio of the inputs. The engine is designed to run on Liquid Volatiles and Liquid Oxygen, some Stationeers have reported excessive thrust values by switching to Liquid Nitrous Oxide" - .into(), - name: "Pumped Liquid Engine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::Throttle, MemoryAccess::ReadWrite), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::PassedMoles, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -737232128i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructurePurgeValve".into(), - prefab_hash: -737232128i32, - desc: "Allows for removal of pressurant gas and evaporated liquids from a liquid pipe. Similar in function to a Back Pressure Regulator the Purge Valve moves gas from the input liquid pipe to the output gas pipe aiming to keep the pressure of the input at the target setting." - .into(), - name: "Purge Valve".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1756913871i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRailing".into(), - prefab_hash: -1756913871i32, - desc: "\"Safety third.\"".into(), - name: "Railing Industrial (Type 1)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1633947337i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRecycler".into(), - prefab_hash: -1633947337i32, - desc: "A device for collecting the raw resources while destroying an item. Produces Reagent Mix containing packages of reagents. Pass these through the Centrifuge to gain back the source ores. Plants and organic matter passed through will create Biomass, which when passed through the Centrifuge will produce Biomass." - .into(), - name: "Recycler".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: true, - }, - } - .into(), - ), - ( - -1577831321i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRefrigeratedVendingMachine".into(), - prefab_hash: -1577831321i32, - desc: "The refrigerated OmniKool vending machine is an advanced version of the standard Vending Machine, which maintains an optimum pressure and constant temperature of -130 degrees C, to prevent food spoilage. It can hold up to 100 stacks.\nThe OmniKool also has an in-built Stacker, allowing players to set the stack sizes of any items ADDED to the device. The unit\'s default stack size is 50.\nNOTE: altering stack sizes DOES NOT update existing stacks within the machine, only those subsequently added. " - .into(), - name: "Refrigerated Vending Machine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![] - .into_iter().collect()), (4u32, vec![] .into_iter().collect()), - (5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter() - .collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![] - .into_iter().collect()), (9u32, vec![] .into_iter().collect()), - (10u32, vec![] .into_iter().collect()), (11u32, vec![] - .into_iter().collect()), (12u32, vec![] .into_iter().collect()), - (13u32, vec![] .into_iter().collect()), (14u32, vec![] - .into_iter().collect()), (15u32, vec![] .into_iter().collect()), - (16u32, vec![] .into_iter().collect()), (17u32, vec![] - .into_iter().collect()), (18u32, vec![] .into_iter().collect()), - (19u32, vec![] .into_iter().collect()), (20u32, vec![] - .into_iter().collect()), (21u32, vec![] .into_iter().collect()), - (22u32, vec![] .into_iter().collect()), (23u32, vec![] - .into_iter().collect()), (24u32, vec![] .into_iter().collect()), - (25u32, vec![] .into_iter().collect()), (26u32, vec![] - .into_iter().collect()), (27u32, vec![] .into_iter().collect()), - (28u32, vec![] .into_iter().collect()), (29u32, vec![] - .into_iter().collect()), (30u32, vec![] .into_iter().collect()), - (31u32, vec![] .into_iter().collect()), (32u32, vec![] - .into_iter().collect()), (33u32, vec![] .into_iter().collect()), - (34u32, vec![] .into_iter().collect()), (35u32, vec![] - .into_iter().collect()), (36u32, vec![] .into_iter().collect()), - (37u32, vec![] .into_iter().collect()), (38u32, vec![] - .into_iter().collect()), (39u32, vec![] .into_iter().collect()), - (40u32, vec![] .into_iter().collect()), (41u32, vec![] - .into_iter().collect()), (42u32, vec![] .into_iter().collect()), - (43u32, vec![] .into_iter().collect()), (44u32, vec![] - .into_iter().collect()), (45u32, vec![] .into_iter().collect()), - (46u32, vec![] .into_iter().collect()), (47u32, vec![] - .into_iter().collect()), (48u32, vec![] .into_iter().collect()), - (49u32, vec![] .into_iter().collect()), (50u32, vec![] - .into_iter().collect()), (51u32, vec![] .into_iter().collect()), - (52u32, vec![] .into_iter().collect()), (53u32, vec![] - .into_iter().collect()), (54u32, vec![] .into_iter().collect()), - (55u32, vec![] .into_iter().collect()), (56u32, vec![] - .into_iter().collect()), (57u32, vec![] .into_iter().collect()), - (58u32, vec![] .into_iter().collect()), (59u32, vec![] - .into_iter().collect()), (60u32, vec![] .into_iter().collect()), - (61u32, vec![] .into_iter().collect()), (62u32, vec![] - .into_iter().collect()), (63u32, vec![] .into_iter().collect()), - (64u32, vec![] .into_iter().collect()), (65u32, vec![] - .into_iter().collect()), (66u32, vec![] .into_iter().collect()), - (67u32, vec![] .into_iter().collect()), (68u32, vec![] - .into_iter().collect()), (69u32, vec![] .into_iter().collect()), - (70u32, vec![] .into_iter().collect()), (71u32, vec![] - .into_iter().collect()), (72u32, vec![] .into_iter().collect()), - (73u32, vec![] .into_iter().collect()), (74u32, vec![] - .into_iter().collect()), (75u32, vec![] .into_iter().collect()), - (76u32, vec![] .into_iter().collect()), (77u32, vec![] - .into_iter().collect()), (78u32, vec![] .into_iter().collect()), - (79u32, vec![] .into_iter().collect()), (80u32, vec![] - .into_iter().collect()), (81u32, vec![] .into_iter().collect()), - (82u32, vec![] .into_iter().collect()), (83u32, vec![] - .into_iter().collect()), (84u32, vec![] .into_iter().collect()), - (85u32, vec![] .into_iter().collect()), (86u32, vec![] - .into_iter().collect()), (87u32, vec![] .into_iter().collect()), - (88u32, vec![] .into_iter().collect()), (89u32, vec![] - .into_iter().collect()), (90u32, vec![] .into_iter().collect()), - (91u32, vec![] .into_iter().collect()), (92u32, vec![] - .into_iter().collect()), (93u32, vec![] .into_iter().collect()), - (94u32, vec![] .into_iter().collect()), (95u32, vec![] - .into_iter().collect()), (96u32, vec![] .into_iter().collect()), - (97u32, vec![] .into_iter().collect()), (98u32, vec![] - .into_iter().collect()), (99u32, vec![] .into_iter().collect()), - (100u32, vec![] .into_iter().collect()), (101u32, vec![] - .into_iter().collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Ratio, MemoryAccess::Read), (LogicType::Quantity, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RequestHash, MemoryAccess::ReadWrite), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: true, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 2027713511i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureReinforcedCompositeWindow".into(), - prefab_hash: 2027713511i32, - desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." - .into(), - name: "Reinforced Window (Composite)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -816454272i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureReinforcedCompositeWindowSteel".into(), - prefab_hash: -816454272i32, - desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." - .into(), - name: "Reinforced Window (Composite Steel)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1939061729i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureReinforcedWallPaddedWindow".into(), - prefab_hash: 1939061729i32, - desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." - .into(), - name: "Reinforced Window (Padded)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 158502707i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureReinforcedWallPaddedWindowThin".into(), - prefab_hash: 158502707i32, - desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." - .into(), - name: "Reinforced Window (Thin)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 808389066i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRocketAvionics".into(), - prefab_hash: 808389066i32, - desc: "".into(), - name: "Rocket Avionics".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Reagents, MemoryAccess::Read), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::VelocityRelativeY, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::Progress, MemoryAccess::Read), - (LogicType::DestinationCode, MemoryAccess::ReadWrite), - (LogicType::Acceleration, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::AutoShutOff, MemoryAccess::ReadWrite), - (LogicType::Mass, MemoryAccess::Read), (LogicType::DryMass, - MemoryAccess::Read), (LogicType::Thrust, MemoryAccess::Read), - (LogicType::Weight, MemoryAccess::Read), - (LogicType::ThrustToWeight, MemoryAccess::Read), - (LogicType::TimeToDestination, MemoryAccess::Read), - (LogicType::BurnTimeRemaining, MemoryAccess::Read), - (LogicType::AutoLand, MemoryAccess::Write), - (LogicType::FlightControlRule, MemoryAccess::Read), - (LogicType::ReEntryAltitude, MemoryAccess::Read), - (LogicType::Apex, MemoryAccess::Read), (LogicType::RatioHydrogen, - MemoryAccess::Read), (LogicType::RatioLiquidHydrogen, - MemoryAccess::Read), (LogicType::RatioPollutedWater, - MemoryAccess::Read), (LogicType::Discover, MemoryAccess::Read), - (LogicType::Chart, MemoryAccess::Read), (LogicType::Survey, - MemoryAccess::Read), (LogicType::NavPoints, MemoryAccess::Read), - (LogicType::ChartedNavPoints, MemoryAccess::Read), - (LogicType::Sites, MemoryAccess::Read), (LogicType::CurrentCode, - MemoryAccess::Read), (LogicType::Density, MemoryAccess::Read), - (LogicType::Richness, MemoryAccess::Read), (LogicType::Size, - MemoryAccess::Read), (LogicType::TotalQuantity, - MemoryAccess::Read), (LogicType::MinedQuantity, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Invalid".into()), (1u32, "None".into()), (2u32, - "Mine".into()), (3u32, "Survey".into()), (4u32, "Discover" - .into()), (5u32, "Chart".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: true, - }, - } - .into(), - ), - ( - 997453927i32, - StructureLogicDeviceMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRocketCelestialTracker".into(), - prefab_hash: 997453927i32, - desc: "The Celestial Tracker can be placed in Rockets and when turned on will provide data that can be used to orientate devices such as the Telescope. The Horizontal and Vertical output is localized to the orientation of the tracker. You can calibrate your alignment by comparing the result for the primary body with the output from the Daylight Sensor. Full functionality will only be available in orbit, but you can configure using the primary body. For aligning with the telescope, have the face plate facing up and the cables facing in the same direction as for the telescope and the output values will be aligned." - .into(), - name: "Rocket Celestial Tracker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Horizontal, MemoryAccess::Read), - (LogicType::Vertical, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::Index, - MemoryAccess::ReadWrite), (LogicType::CelestialHash, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - memory: MemoryInfo { - instructions: Some( - vec![ - ("BodyOrientation".into(), Instruction { description : - "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CELESTIAL_INDEX | BYTE_8 |\r\n| 16-31 | HORIZONTAL_DECI_DEGREES | SHORT_16 |\r\n| 32-47 | VERTICAL_DECI_DEGREES | SHORT_16 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "CelestialTracking".into(), value : 1i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::Read, - memory_size: 12u32, - }, - } - .into(), - ), - ( - 150135861i32, - StructureCircuitHolderTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRocketCircuitHousing".into(), - prefab_hash: 150135861i32, - desc: "".into(), - name: "Rocket Circuit Housing".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::LineNumber, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::LineNumber, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: true, - }, - slots: vec![ - SlotInfo { name : "Programmable Chip".into(), typ : - Class::ProgrammableChip } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: Some(6u32), - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 178472613i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRocketEngineTiny".into(), - prefab_hash: 178472613i32, - desc: "".into(), - name: "Rocket Engine (Tiny)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1781051034i32, - StructureLogicDeviceConsumerMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRocketManufactory".into(), - prefab_hash: 1781051034i32, - desc: "".into(), - name: "Rocket Manufactory".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RecipeHash, MemoryAccess::ReadWrite), - (LogicType::CompletionRatio, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), - "ItemCopperIngot".into(), "ItemElectrumIngot".into(), - "ItemGoldIngot".into(), "ItemHastelloyIngot".into(), - "ItemInconelIngot".into(), "ItemInvarIngot".into(), - "ItemIronIngot".into(), "ItemLeadIngot".into(), "ItemNickelIngot" - .into(), "ItemSiliconIngot".into(), "ItemSilverIngot".into(), - "ItemSolderIngot".into(), "ItemSolidFuel".into(), - "ItemSteelIngot".into(), "ItemStelliteIngot".into(), - "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - fabricator_info: Some(FabricatorInfo { - tier: MachineTier::Undefined, - recipes: vec![ - ("ItemKitAccessBridge".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 9000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 3f64), ("Steel" - .into(), 10f64)] .into_iter().collect() }), - ("ItemKitChuteUmbilical".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 3f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), ("ItemKitElectricUmbilical".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : - 2500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Gold".into(), 5f64), ("Steel".into(), - 5f64)] .into_iter().collect() }), ("ItemKitFuselage".into(), - Recipe { tier : MachineTier::TierOne, time : 120f64, energy : - 60000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Steel".into(), 20f64)] .into_iter() - .collect() }), ("ItemKitGasUmbilical".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Steel".into(), 5f64)] - .into_iter().collect() }), ("ItemKitGovernedGasRocketEngine" - .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, - energy : 60000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold".into(), - 5f64), ("Iron".into(), 15f64)] .into_iter().collect() }), - ("ItemKitLaunchMount".into(), Recipe { tier : - MachineTier::TierOne, time : 240f64, energy : 120000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Steel".into(), 60f64)] .into_iter().collect() }), - ("ItemKitLaunchTower".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 30000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Steel".into(), 10f64)] .into_iter().collect() }), - ("ItemKitLiquidUmbilical".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Steel".into(), 5f64)] - .into_iter().collect() }), ("ItemKitPressureFedGasEngine".into(), - Recipe { tier : MachineTier::TierOne, time : 60f64, energy : - 60000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 4i64, reagents : vec![("Constantan".into(), 10f64), ("Electrum" - .into(), 5f64), ("Invar".into(), 20f64), ("Steel".into(), 20f64)] - .into_iter().collect() }), ("ItemKitPressureFedLiquidEngine" - .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, - energy : 60000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Astroloy".into(), 10f64), ("Inconel" - .into(), 5f64), ("Waspaloy".into(), 15f64)] .into_iter() - .collect() }), ("ItemKitPumpedLiquidEngine".into(), Recipe { tier - : MachineTier::TierOne, time : 60f64, energy : 60000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 10f64), ("Electrum".into(), 5f64), - ("Steel".into(), 15f64)] .into_iter().collect() }), - ("ItemKitRocketAvionics".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Electrum".into(), 2f64), ("Solder".into(), 3f64)] - .into_iter().collect() }), ("ItemKitRocketBattery".into(), Recipe - { tier : MachineTier::TierOne, time : 10f64, energy : 10000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Electrum".into(), 5f64), ("Solder".into(), 5f64), ("Steel" - .into(), 10f64)] .into_iter().collect() }), - ("ItemKitRocketCargoStorage".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 30000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Constantan".into(), 10f64), ("Invar".into(), 5f64), - ("Steel".into(), 10f64)] .into_iter().collect() }), - ("ItemKitRocketCelestialTracker".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Electrum".into(), 5f64), ("Steel".into(), 5f64)] - .into_iter().collect() }), ("ItemKitRocketCircuitHousing".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : - 2500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Electrum".into(), 2f64), ("Solder" - .into(), 3f64)] .into_iter().collect() }), - ("ItemKitRocketDatalink".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Electrum".into(), 2f64), ("Solder".into(), 3f64)] - .into_iter().collect() }), ("ItemKitRocketGasFuelTank".into(), - Recipe { tier : MachineTier::TierOne, time : 10f64, energy : - 5000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel".into(), - 10f64)] .into_iter().collect() }), ("ItemKitRocketLiquidFuelTank" - .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, - energy : 5000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel".into(), - 20f64)] .into_iter().collect() }), ("ItemKitRocketMiner".into(), - Recipe { tier : MachineTier::TierOne, time : 60f64, energy : - 60000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 4i64, reagents : vec![("Constantan".into(), 10f64), ("Electrum" - .into(), 5f64), ("Invar".into(), 5f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), ("ItemKitRocketScanner".into(), Recipe - { tier : MachineTier::TierOne, time : 60f64, energy : 60000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 10f64), ("Gold".into(), 10f64)] - .into_iter().collect() }), ("ItemKitRocketTransformerSmall" - .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, - energy : 12000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Electrum".into(), 5f64), ("Steel".into(), - 10f64)] .into_iter().collect() }), ("ItemKitStairwell".into(), - Recipe { tier : MachineTier::TierOne, time : 20f64, energy : - 6000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 15f64)] .into_iter() - .collect() }), ("ItemRocketMiningDrillHead".into(), Recipe { tier - : MachineTier::TierOne, time : 30f64, energy : 5000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 20f64)] .into_iter().collect() }), - ("ItemRocketMiningDrillHeadDurable".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Iron".into(), 10f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), - ("ItemRocketMiningDrillHeadHighSpeedIce".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Invar".into(), 5f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), - ("ItemRocketMiningDrillHeadHighSpeedMineral".into(), Recipe { - tier : MachineTier::TierOne, time : 30f64, energy : 5000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Invar".into(), 5f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), ("ItemRocketMiningDrillHeadIce" - .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, - energy : 5000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Iron".into(), 10f64), ("Steel".into(), - 10f64)] .into_iter().collect() }), - ("ItemRocketMiningDrillHeadLongTerm".into(), Recipe { tier : - MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Invar".into(), 5f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), ("ItemRocketMiningDrillHeadMineral" - .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, - energy : 5000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Iron".into(), 10f64), ("Steel".into(), - 10f64)] .into_iter().collect() }), ("ItemRocketScanningHead" - .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, - energy : 60000f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 3f64), ("Gold".into(), - 2f64)] .into_iter().collect() }) - ] - .into_iter() - .collect(), - }), - memory: MemoryInfo { - instructions: Some( - vec![ - ("DeviceSetLock".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" - .into(), typ : "PrinterInstruction".into(), value : 6i64 }), - ("EjectAllReagents".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 8i64 }), - ("EjectReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "PrinterInstruction".into(), value : 7i64 }), - ("ExecuteRecipe".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 2i64 }), - ("JumpIfNextInvalid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 4i64 }), - ("JumpToAddress".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 5i64 }), - ("MissingRecipeReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 9i64 }), - ("StackPointer".into(), Instruction { description : - "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 1i64 }), - ("WaitUntilNextValid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 3i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::ReadWrite, - memory_size: 64u32, - }, - } - .into(), - ), - ( - -2087223687i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRocketMiner".into(), - prefab_hash: -2087223687i32, - desc: "Gathers available resources at the rocket\'s current space location." - .into(), - name: "Rocket Miner".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::DrillCondition, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Export".into(), typ : Class::None }, SlotInfo { - name : "Drill Head Slot".into(), typ : Class::DrillHead } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 2014252591i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRocketScanner".into(), - prefab_hash: 2014252591i32, - desc: "".into(), - name: "Rocket Scanner".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Scanner Head Slot".into(), typ : - Class::ScanningHead } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -654619479i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRocketTower".into(), - prefab_hash: -654619479i32, - desc: "".into(), - name: "Launch Tower".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 518925193i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRocketTransformerSmall".into(), - prefab_hash: 518925193i32, - desc: "".into(), - name: "Transformer Small (Rocket)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 806513938i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureRover".into(), - prefab_hash: 806513938i32, - desc: "".into(), - name: "Rover Frame".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1875856925i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSDBHopper".into(), - prefab_hash: -1875856925i32, - desc: "".into(), - name: "SDB Hopper".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 467225612i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSDBHopperAdvanced".into(), - prefab_hash: 467225612i32, - desc: "".into(), - name: "SDB Hopper Advanced".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1155865682i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSDBSilo".into(), - prefab_hash: 1155865682i32, - desc: "The majestic silo holds large quantities of almost anything. While it is doing that, it cannot be deconstructed. Note also, that any food you put into a silo is likely to decay extremely rapidly. The silo can hold up to 600 stacks." - .into(), - name: "SDB Silo".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Quantity, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 439026183i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSatelliteDish".into(), - prefab_hash: 439026183i32, - desc: "This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic." - .into(), - name: "Medium Satellite Dish".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::SignalStrength, MemoryAccess::Read), - (LogicType::SignalId, MemoryAccess::Read), - (LogicType::InterrogationProgress, MemoryAccess::Read), - (LogicType::TargetPadIndex, MemoryAccess::ReadWrite), - (LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ, - MemoryAccess::Read), (LogicType::MinimumWattsToContact, - MemoryAccess::Read), (LogicType::WattsReachingContact, - MemoryAccess::Read), (LogicType::ContactTypeId, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::BestContactFilter, - MemoryAccess::ReadWrite), (LogicType::NameHash, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -641491515i32, - StructureLogicDeviceConsumerMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSecurityPrinter".into(), - prefab_hash: -641491515i32, - desc: "Any Stationeer concerned about security needs the Harkwell-designed Vigilant-E security printer. Use the Vigilant-E to create a Cartridge (Access Controller), in order to restrict access to different parts of your base via keycards like the Access Card (Blue). The printer also makes a variety of weapons and ammunitions to defend your base against any hostile, aggressive or just slightly rude entites you encounter as you explore the Solar System.\n" - .into(), - name: "Security Printer".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RecipeHash, MemoryAccess::ReadWrite), - (LogicType::CompletionRatio, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), - "ItemCopperIngot".into(), "ItemElectrumIngot".into(), - "ItemGoldIngot".into(), "ItemHastelloyIngot".into(), - "ItemInconelIngot".into(), "ItemInvarIngot".into(), - "ItemIronIngot".into(), "ItemLeadIngot".into(), "ItemNickelIngot" - .into(), "ItemSiliconIngot".into(), "ItemSilverIngot".into(), - "ItemSolderIngot".into(), "ItemSolidFuel".into(), - "ItemSteelIngot".into(), "ItemStelliteIngot".into(), - "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - fabricator_info: Some(FabricatorInfo { - tier: MachineTier::Undefined, - recipes: vec![ - ("AccessCardBlack".into(), Recipe { tier : MachineTier::TierOne, - time : 2f64, energy : 200f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] - .into_iter().collect() }), ("AccessCardBlue".into(), Recipe { - tier : MachineTier::TierOne, time : 2f64, energy : 200f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), ("AccessCardBrown" - .into(), Recipe { tier : MachineTier::TierOne, time : 2f64, - energy : 200f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold".into(), - 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }), - ("AccessCardGray".into(), Recipe { tier : MachineTier::TierOne, - time : 2f64, energy : 200f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] - .into_iter().collect() }), ("AccessCardGreen".into(), Recipe { - tier : MachineTier::TierOne, time : 2f64, energy : 200f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), ("AccessCardKhaki" - .into(), Recipe { tier : MachineTier::TierOne, time : 2f64, - energy : 200f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold".into(), - 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }), - ("AccessCardOrange".into(), Recipe { tier : MachineTier::TierOne, - time : 2f64, energy : 200f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] - .into_iter().collect() }), ("AccessCardPink".into(), Recipe { - tier : MachineTier::TierOne, time : 2f64, energy : 200f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), ("AccessCardPurple" - .into(), Recipe { tier : MachineTier::TierOne, time : 2f64, - energy : 200f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold".into(), - 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }), - ("AccessCardRed".into(), Recipe { tier : MachineTier::TierOne, - time : 2f64, energy : 200f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] - .into_iter().collect() }), ("AccessCardWhite".into(), Recipe { - tier : MachineTier::TierOne, time : 2f64, energy : 200f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), ("AccessCardYellow" - .into(), Recipe { tier : MachineTier::TierOne, time : 2f64, - energy : 200f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold".into(), - 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }), - ("CartridgeAccessController".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 1f64)] .into_iter().collect() }), ("FireArmSMG".into(), - Recipe { tier : MachineTier::TierOne, time : 120f64, energy : - 3000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Nickel".into(), 10f64), ("Steel".into(), - 30f64)] .into_iter().collect() }), ("Handgun".into(), Recipe { - tier : MachineTier::TierOne, time : 120f64, energy : 3000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Nickel".into(), 10f64), ("Steel".into(), 30f64)] - .into_iter().collect() }), ("HandgunMagazine".into(), Recipe { - tier : MachineTier::TierOne, time : 60f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 3f64), ("Lead".into(), 1f64), ("Steel" - .into(), 3f64)] .into_iter().collect() }), ("ItemAmmoBox".into(), - Recipe { tier : MachineTier::TierOne, time : 120f64, energy : - 3000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 30f64), ("Lead".into(), - 50f64), ("Steel".into(), 30f64)] .into_iter().collect() }), - ("ItemExplosive".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 5i64, reagents : vec![("Copper" - .into(), 5f64), ("Electrum".into(), 1f64), ("Gold".into(), 5f64), - ("Lead".into(), 10f64), ("Steel".into(), 7f64)] .into_iter() - .collect() }), ("ItemGrenade".into(), Recipe { tier : - MachineTier::TierOne, time : 90f64, energy : 2900f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 15f64), ("Gold".into(), 1f64), ("Lead" - .into(), 25f64), ("Steel".into(), 25f64)] .into_iter().collect() - }), ("ItemMiningCharge".into(), Recipe { tier : - MachineTier::TierOne, time : 7f64, energy : 200f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 7f64), ("Lead".into(), 10f64)] .into_iter().collect() - }), ("SMGMagazine".into(), Recipe { tier : MachineTier::TierOne, - time : 60f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Copper" - .into(), 3f64), ("Lead".into(), 1f64), ("Steel".into(), 3f64)] - .into_iter().collect() }), ("WeaponPistolEnergy".into(), Recipe { - tier : MachineTier::TierTwo, time : 120f64, energy : 3000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Electrum".into(), 20f64), ("Gold".into(), 10f64), - ("Solder".into(), 10f64), ("Steel".into(), 10f64)] .into_iter() - .collect() }), ("WeaponRifleEnergy".into(), Recipe { tier : - MachineTier::TierTwo, time : 240f64, energy : 10000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 6i64, reagents : - vec![("Constantan".into(), 10f64), ("Electrum".into(), 20f64), - ("Gold".into(), 10f64), ("Invar".into(), 10f64), ("Solder" - .into(), 10f64), ("Steel".into(), 20f64)] .into_iter().collect() - }) - ] - .into_iter() - .collect(), - }), - memory: MemoryInfo { - instructions: Some( - vec![ - ("DeviceSetLock".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" - .into(), typ : "PrinterInstruction".into(), value : 6i64 }), - ("EjectAllReagents".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 8i64 }), - ("EjectReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "PrinterInstruction".into(), value : 7i64 }), - ("ExecuteRecipe".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 2i64 }), - ("JumpIfNextInvalid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 4i64 }), - ("JumpToAddress".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 5i64 }), - ("MissingRecipeReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 9i64 }), - ("StackPointer".into(), Instruction { description : - "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 1i64 }), - ("WaitUntilNextValid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 3i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::ReadWrite, - memory_size: 64u32, - }, - } - .into(), - ), - ( - 1172114950i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureShelf".into(), - prefab_hash: 1172114950i32, - desc: "".into(), - name: "Shelf".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 182006674i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureShelfMedium".into(), - prefab_hash: 182006674i32, - desc: "A shelf for putting things on, so you can see them.".into(), - name: "Shelf Medium".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1330754486i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureShortCornerLocker".into(), - prefab_hash: 1330754486i32, - desc: "".into(), - name: "Short Corner Locker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -554553467i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureShortLocker".into(), - prefab_hash: -554553467i32, - desc: "".into(), - name: "Short Locker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -775128944i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureShower".into(), - prefab_hash: -775128944i32, - desc: "".into(), - name: "Shower".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1081797501i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureShowerPowered".into(), - prefab_hash: -1081797501i32, - desc: "".into(), - name: "Shower (Powered)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 879058460i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSign1x1".into(), - prefab_hash: 879058460i32, - desc: "".into(), - name: "Sign 1x1".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 908320837i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSign2x1".into(), - prefab_hash: 908320837i32, - desc: "".into(), - name: "Sign 2x1".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -492611i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSingleBed".into(), - prefab_hash: -492611i32, - desc: "Description coming.".into(), - name: "Single Bed".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1467449329i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSleeper".into(), - prefab_hash: -1467449329i32, - desc: "".into(), - name: "Sleeper".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::EntityState, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1213495833i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSleeperLeft".into(), - prefab_hash: 1213495833i32, - desc: "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided." - .into(), - name: "Sleeper Left".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::EntityState, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, - "Unpowered".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1812330717i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSleeperRight".into(), - prefab_hash: -1812330717i32, - desc: "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided." - .into(), - name: "Sleeper Right".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::EntityState, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, - "Unpowered".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1300059018i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSleeperVertical".into(), - prefab_hash: -1300059018i32, - desc: "The vertical variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided." - .into(), - name: "Sleeper Vertical".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.1f32, - radiation_factor: 0.1f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::EntityState, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, - "Unpowered".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1382098999i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSleeperVerticalDroid".into(), - prefab_hash: 1382098999i32, - desc: "The Droid Sleeper will recharge robot batteries and equiped suit batteries if present. This sleeper variant is only safe for robots. Entering as a non robot character will cause you to take damage." - .into(), - name: "Droid Sleeper Vertical".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1310303582i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallDirectHeatExchangeGastoGas".into(), - prefab_hash: 1310303582i32, - desc: "Direct Heat Exchangers equalize the temperature of the two input networks." - .into(), - name: "Small Direct Heat Exchanger - Gas + Gas".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1825212016i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallDirectHeatExchangeLiquidtoGas".into(), - prefab_hash: 1825212016i32, - desc: "Direct Heat Exchangers equalize the temperature of the two input networks." - .into(), - name: "Small Direct Heat Exchanger - Liquid + Gas ".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -507770416i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallDirectHeatExchangeLiquidtoLiquid".into(), - prefab_hash: -507770416i32, - desc: "Direct Heat Exchangers equalize the temperature of the two input networks." - .into(), - name: "Small Direct Heat Exchanger - Liquid + Liquid".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input2 } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2138748650i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallSatelliteDish".into(), - prefab_hash: -2138748650i32, - desc: "This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic." - .into(), - name: "Small Satellite Dish".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::SignalStrength, MemoryAccess::Read), - (LogicType::SignalId, MemoryAccess::Read), - (LogicType::InterrogationProgress, MemoryAccess::Read), - (LogicType::TargetPadIndex, MemoryAccess::ReadWrite), - (LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ, - MemoryAccess::Read), (LogicType::MinimumWattsToContact, - MemoryAccess::Read), (LogicType::WattsReachingContact, - MemoryAccess::Read), (LogicType::ContactTypeId, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::BestContactFilter, - MemoryAccess::ReadWrite), (LogicType::NameHash, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1633000411i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallTableBacklessDouble".into(), - prefab_hash: -1633000411i32, - desc: "".into(), - name: "Small (Table Backless Double)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1897221677i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallTableBacklessSingle".into(), - prefab_hash: -1897221677i32, - desc: "".into(), - name: "Small (Table Backless Single)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1260651529i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallTableDinnerSingle".into(), - prefab_hash: 1260651529i32, - desc: "".into(), - name: "Small (Table Dinner Single)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -660451023i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallTableRectangleDouble".into(), - prefab_hash: -660451023i32, - desc: "".into(), - name: "Small (Table Rectangle Double)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -924678969i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallTableRectangleSingle".into(), - prefab_hash: -924678969i32, - desc: "".into(), - name: "Small (Table Rectangle Single)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -19246131i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallTableThickDouble".into(), - prefab_hash: -19246131i32, - desc: "".into(), - name: "Small (Table Thick Double)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -291862981i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSmallTableThickSingle".into(), - prefab_hash: -291862981i32, - desc: "".into(), - name: "Small Table (Thick Single)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2045627372i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSolarPanel".into(), - prefab_hash: -2045627372i32, - desc: "Sinotai\'s standard solar panels are used for generating power from sunlight. They can be connected to Logic systems, in order to track sunlight, but their reduced during storms and when damaged. You can repair these using some trusty Duct Tape." - .into(), - name: "Solar Panel".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1554349863i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSolarPanel45".into(), - prefab_hash: -1554349863i32, - desc: "Sinotai basic solar panels generate power from sunlight, sitting at 45 degrees to the ground. Their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape." - .into(), - name: "Solar Panel (Angled)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 930865127i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSolarPanel45Reinforced".into(), - prefab_hash: 930865127i32, - desc: "This solar panel is resistant to storm damage.".into(), - name: "Solar Panel (Heavy Angled)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -539224550i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSolarPanelDual".into(), - prefab_hash: -539224550i32, - desc: "Sinotai dual solar panels are used for generating power from sunlight, with dedicated data and power ports. They can be connected to {Logic systems, in order to track sunlight, but their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape." - .into(), - name: "Solar Panel (Dual)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1545574413i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSolarPanelDualReinforced".into(), - prefab_hash: -1545574413i32, - desc: "This solar panel is resistant to storm damage.".into(), - name: "Solar Panel (Heavy Dual)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1968102968i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSolarPanelFlat".into(), - prefab_hash: 1968102968i32, - desc: "Sinotai basic solar panels generate power from sunlight. They lie flat to the ground, and their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape." - .into(), - name: "Solar Panel (Flat)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1697196770i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSolarPanelFlatReinforced".into(), - prefab_hash: 1697196770i32, - desc: "This solar panel is resistant to storm damage.".into(), - name: "Solar Panel (Heavy Flat)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -934345724i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSolarPanelReinforced".into(), - prefab_hash: -934345724i32, - desc: "This solar panel is resistant to storm damage.".into(), - name: "Solar Panel (Heavy)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, - MemoryAccess::ReadWrite), (LogicType::Vertical, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 813146305i32, - StructureLogicDeviceConsumerTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSolidFuelGenerator".into(), - prefab_hash: 813146305i32, - desc: "The mainstay of power generation for Stationeers, this device provides 20kW of power. Multiple solid resources can be loaded. While operating, the device will output its maximum power regardless of whether you have captured it or not. Watch for blown wires! It will output much more power than your regular Cable Coil can handle." - .into(), - name: "Generator (Solid Fuel)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::PowerGeneration, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Not Generating".into()), (1u32, "Generating".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Input".into(), typ : Class::Ore }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemCharcoal".into(), "ItemCoalOre".into(), "ItemSolidFuel" - .into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - fabricator_info: None, - } - .into(), - ), - ( - -1009150565i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSorter".into(), - prefab_hash: -1009150565i32, - desc: "No amount of automation is complete without some way of moving different items to different parts of a system. The Xigo A2B sorter can be programmed via a computer with a Sorter Motherboard to direct various items into different chute networks. Filtered items are always passed out the righthand side of the sorter, while non filtered items continue straight through." - .into(), - name: "Sorter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::Output, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "Split".into()), (1u32, "Filter".into()), (2u32, - "Logic".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : - "Export 2".into(), typ : Class::None }, SlotInfo { name : "Data Disk" - .into(), typ : Class::DataDisk } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output2 }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2020231820i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStacker".into(), - prefab_hash: -2020231820i32, - desc: "A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed." - .into(), - name: "Stacker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::Output, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : - "Processing".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1585641623i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStackerReverse".into(), - prefab_hash: 1585641623i32, - desc: "A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs. The reversed stacker has power and data on the opposite side.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed." - .into(), - name: "Stacker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::Output, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : - "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1405018945i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairs4x2".into(), - prefab_hash: 1405018945i32, - desc: "".into(), - name: "Stairs".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 155214029i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairs4x2RailL".into(), - prefab_hash: 155214029i32, - desc: "".into(), - name: "Stairs with Rail (Left)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -212902482i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairs4x2RailR".into(), - prefab_hash: -212902482i32, - desc: "".into(), - name: "Stairs with Rail (Right)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1088008720i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairs4x2Rails".into(), - prefab_hash: -1088008720i32, - desc: "".into(), - name: "Stairs with Rails".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 505924160i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairwellBackLeft".into(), - prefab_hash: 505924160i32, - desc: "".into(), - name: "Stairwell (Back Left)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -862048392i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairwellBackPassthrough".into(), - prefab_hash: -862048392i32, - desc: "".into(), - name: "Stairwell (Back Passthrough)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2128896573i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairwellBackRight".into(), - prefab_hash: -2128896573i32, - desc: "".into(), - name: "Stairwell (Back Right)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -37454456i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairwellFrontLeft".into(), - prefab_hash: -37454456i32, - desc: "".into(), - name: "Stairwell (Front Left)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1625452928i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairwellFrontPassthrough".into(), - prefab_hash: -1625452928i32, - desc: "".into(), - name: "Stairwell (Front Passthrough)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 340210934i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairwellFrontRight".into(), - prefab_hash: 340210934i32, - desc: "".into(), - name: "Stairwell (Front Right)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2049879875i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStairwellNoDoors".into(), - prefab_hash: 2049879875i32, - desc: "".into(), - name: "Stairwell (No Doors)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -260316435i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStirlingEngine".into(), - prefab_hash: -260316435i32, - desc: "Harnessing an ancient thermal exploit, the Recurso \'Libra\' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room\'s ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results." - .into(), - name: "Stirling Engine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.15f32, - radiation_factor: 0.15f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), - (LogicType::Temperature, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::RatioOxygen, MemoryAccess::Read), - (LogicType::RatioCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioNitrogen, MemoryAccess::Read), - (LogicType::RatioPollutant, MemoryAccess::Read), - (LogicType::RatioVolatiles, MemoryAccess::Read), - (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PowerGeneration, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::Volume, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::EnvironmentEfficiency, MemoryAccess::Read), - (LogicType::WorkingGasEfficiency, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -793623899i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureStorageLocker".into(), - prefab_hash: -793623899i32, - desc: "".into(), - name: "Locker".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (15u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (16u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (17u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (18u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (19u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (20u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (21u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (22u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (23u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (24u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (25u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (26u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (27u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (28u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (29u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : - Class::None }, SlotInfo { name : "".into(), typ : Class::None }, - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 255034731i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureSuitStorage".into(), - prefab_hash: 255034731i32, - desc: "As tidy as it is useful, the suit storage rack holds an Eva Suit, Space Helmet and a Jetpack Basic.\nWhen powered and connected to and , it will recharge the suit\'s batteries, refill the Canister (Oxygen) and your Filter (Nitrogen) Gas Canister. The wastetank will be pumped out to the pipe connected to the waste outlet.\nAll the rack\'s pipes must be connected or the unit will show an error state, but it will still charge the battery." - .into(), - name: "Suit Storage".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::On, MemoryAccess::ReadWrite), - (LogicSlotType::Lock, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::PressureWaste, MemoryAccess::Read), - (LogicSlotType::PressureAir, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Helmet".into(), typ : Class::Helmet }, SlotInfo { - name : "Suit".into(), typ : Class::Suit }, SlotInfo { name : "Back" - .into(), typ : Class::Back } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input2 }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1606848156i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTankBig".into(), - prefab_hash: -1606848156i32, - desc: "".into(), - name: "Large Tank".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::Volume, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1280378227i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTankBigInsulated".into(), - prefab_hash: 1280378227i32, - desc: "".into(), - name: "Tank Big (Insulated)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::Volume, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -1276379454i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTankConnector".into(), - prefab_hash: -1276379454i32, - desc: "Tank connectors are basic mounting devices that allow you to attach a Portable Gas Tank to a gas pipe network." - .into(), - name: "Tank Connector".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - slots: vec![SlotInfo { name : "".into(), typ : Class::None }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1331802518i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTankConnectorLiquid".into(), - prefab_hash: 1331802518i32, - desc: "These basic mounting devices allow you to attach a Portable Liquid Tank to a liquid pipe network." - .into(), - name: "Liquid Tank Connector".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.010000001f32, - radiation_factor: 0.0005f32, - }), - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Portable Slot".into(), typ : Class::None } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1013514688i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTankSmall".into(), - prefab_hash: 1013514688i32, - desc: "".into(), - name: "Small Tank".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::Volume, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 955744474i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTankSmallAir".into(), - prefab_hash: 955744474i32, - desc: "".into(), - name: "Small Tank (Air)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::Volume, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 2102454415i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTankSmallFuel".into(), - prefab_hash: 2102454415i32, - desc: "".into(), - name: "Small Tank (Fuel)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0.05f32, - radiation_factor: 0.002f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::Volume, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 272136332i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTankSmallInsulated".into(), - prefab_hash: 272136332i32, - desc: "".into(), - name: "Tank Small (Insulated)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: Some(ThermalInfo { - convection_factor: 0f32, - radiation_factor: 0f32, - }), - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, - MemoryAccess::Read), (LogicType::Temperature, - MemoryAccess::Read), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::RatioOxygen, - MemoryAccess::Read), (LogicType::RatioCarbonDioxide, - MemoryAccess::Read), (LogicType::RatioNitrogen, - MemoryAccess::Read), (LogicType::RatioPollutant, - MemoryAccess::Read), (LogicType::RatioVolatiles, - MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), - (LogicType::Volume, MemoryAccess::Read), - (LogicType::RatioNitrousOxide, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::Combustion, MemoryAccess::Read), - (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), - (LogicType::VolumeOfLiquid, MemoryAccess::Read), - (LogicType::RatioLiquidOxygen, MemoryAccess::Read), - (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), - (LogicType::RatioSteam, MemoryAccess::Read), - (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), - (LogicType::RatioLiquidPollutant, MemoryAccess::Read), - (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::RatioHydrogen, MemoryAccess::Read), - (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), - (LogicType::RatioPollutedWater, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: true, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - -465741100i32, - StructureLogicDeviceConsumerMemoryTemplate { - prefab: PrefabInfo { - prefab_name: "StructureToolManufactory".into(), - prefab_hash: -465741100i32, - desc: "No mission can be completed without the proper tools. The Norsec ThuulDek manufactory can fabricate almost any tool or hand-held device a Stationeer may need to complete their mission, as well as a variety of delightful paints.\nUpgrade the device using a Tool Printer Mod for additional recipes and faster processing speeds." - .into(), - name: "Tool Manufactory".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Reagents, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::RecipeHash, MemoryAccess::ReadWrite), - (LogicType::CompletionRatio, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ExportCount, MemoryAccess::Read), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: true, - has_reagents: true, - }, - consumer_info: ConsumerInfo { - consumed_resouces: vec![ - "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), - "ItemCopperIngot".into(), "ItemElectrumIngot".into(), - "ItemGoldIngot".into(), "ItemHastelloyIngot".into(), - "ItemInconelIngot".into(), "ItemInvarIngot".into(), - "ItemIronIngot".into(), "ItemLeadIngot".into(), "ItemNickelIngot" - .into(), "ItemSiliconIngot".into(), "ItemSilverIngot".into(), - "ItemSolderIngot".into(), "ItemSolidFuel".into(), - "ItemSteelIngot".into(), "ItemStelliteIngot".into(), - "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() - ] - .into_iter() - .collect(), - processed_reagents: vec![].into_iter().collect(), - }, - fabricator_info: Some(FabricatorInfo { - tier: MachineTier::Undefined, - recipes: vec![ - ("FlareGun".into(), Recipe { tier : MachineTier::TierOne, time : - 10f64, energy : 2000f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Iron".into(), - 10f64), ("Silicon".into(), 10f64)] .into_iter().collect() }), - ("ItemAngleGrinder".into(), Recipe { tier : MachineTier::TierOne, - time : 10f64, energy : 500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 1f64), ("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemArcWelder".into(), Recipe { tier : MachineTier::TierOne, - time : 30f64, energy : 2500f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 4i64, reagents : vec![("Electrum" - .into(), 10f64), ("Invar".into(), 5f64), ("Solder".into(), - 10f64), ("Steel".into(), 10f64)] .into_iter().collect() }), - ("ItemBasketBall".into(), Recipe { tier : MachineTier::TierOne, - time : 1f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Silicon" - .into(), 1f64)] .into_iter().collect() }), ("ItemBeacon".into(), - Recipe { tier : MachineTier::TierOne, time : 10f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold".into(), - 1f64), ("Iron".into(), 2f64)] .into_iter().collect() }), - ("ItemChemLightBlue".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 1f64)] .into_iter().collect() }), - ("ItemChemLightGreen".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 1f64)] .into_iter().collect() }), - ("ItemChemLightRed".into(), Recipe { tier : MachineTier::TierOne, - time : 1f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Silicon" - .into(), 1f64)] .into_iter().collect() }), ("ItemChemLightWhite" - .into(), Recipe { tier : MachineTier::TierOne, time : 1f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Silicon".into(), 1f64)] .into_iter() - .collect() }), ("ItemChemLightYellow".into(), Recipe { tier : - MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 1f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_Aus".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_Brazil".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_Canada".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_China".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_EU".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_France".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_Germany".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_Japan".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_Korea".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_NZ".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_Russia".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_SouthAfrica".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_UK".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_US".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemClothingBagOveralls_Ukraine".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("ItemCrowbar".into(), Recipe { tier : MachineTier::TierOne, time - : 10f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 5f64)] .into_iter().collect() }), ("ItemDirtCanister".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : - 400f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 3f64)] .into_iter() - .collect() }), ("ItemDisposableBatteryCharger".into(), Recipe { - tier : MachineTier::TierOne, time : 10f64, energy : 1000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 2f64), ("Iron" - .into(), 2f64)] .into_iter().collect() }), ("ItemDrill".into(), - Recipe { tier : MachineTier::TierOne, time : 10f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron".into(), - 5f64)] .into_iter().collect() }), ("ItemDuctTape".into(), Recipe - { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 2f64)] .into_iter().collect() }), - ("ItemEvaSuit".into(), Recipe { tier : MachineTier::TierOne, time - : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemFlagSmall".into(), Recipe { tier : MachineTier::TierOne, - time : 1f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 1f64)] .into_iter().collect() }), ("ItemFlashlight".into(), - Recipe { tier : MachineTier::TierOne, time : 15f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 2f64), ("Gold".into(), - 2f64)] .into_iter().collect() }), ("ItemGlasses".into(), Recipe { - tier : MachineTier::TierOne, time : 20f64, energy : 250f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Iron".into(), 15f64), ("Silicon".into(), 10f64)] - .into_iter().collect() }), ("ItemHardBackpack".into(), Recipe { - tier : MachineTier::TierTwo, time : 30f64, energy : 1500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Astroloy".into(), 5f64), ("Steel".into(), 15f64), - ("Stellite".into(), 5f64)] .into_iter().collect() }), - ("ItemHardJetpack".into(), Recipe { tier : MachineTier::TierTwo, - time : 40f64, energy : 1750f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 4i64, reagents : vec![("Astroloy" - .into(), 8f64), ("Steel".into(), 20f64), ("Stellite".into(), - 8f64), ("Waspaloy".into(), 8f64)] .into_iter().collect() }), - ("ItemHardMiningBackPack".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Invar".into(), 1f64), ("Steel".into(), 6f64)] .into_iter() - .collect() }), ("ItemHardSuit".into(), Recipe { tier : - MachineTier::TierTwo, time : 60f64, energy : 3000f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Astroloy".into(), 10f64), ("Steel".into(), 20f64), - ("Stellite".into(), 2f64)] .into_iter().collect() }), - ("ItemHardsuitHelmet".into(), Recipe { tier : - MachineTier::TierTwo, time : 50f64, energy : 1750f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Astroloy".into(), 2f64), ("Steel".into(), 10f64), - ("Stellite".into(), 2f64)] .into_iter().collect() }), - ("ItemIgniter".into(), Recipe { tier : MachineTier::TierOne, time - : 1f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Copper" - .into(), 3f64)] .into_iter().collect() }), ("ItemJetpackBasic" - .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, - energy : 1500f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Gold".into(), 2f64), ("Lead".into(), - 5f64), ("Steel".into(), 10f64)] .into_iter().collect() }), - ("ItemKitBasket".into(), Recipe { tier : MachineTier::TierOne, - time : 1f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Copper" - .into(), 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemLabeller".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Gold".into(), - 1f64), ("Iron".into(), 2f64)] .into_iter().collect() }), - ("ItemMKIIAngleGrinder".into(), Recipe { tier : - MachineTier::TierTwo, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 1f64), ("Electrum".into(), 4f64), ("Iron" - .into(), 3f64)] .into_iter().collect() }), ("ItemMKIIArcWelder" - .into(), Recipe { tier : MachineTier::TierTwo, time : 30f64, - energy : 2500f64, temperature : RecipeRange { start : 1f64, stop - : 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 4i64, reagents : vec![("Electrum".into(), 14f64), ("Invar" - .into(), 5f64), ("Solder".into(), 10f64), ("Steel".into(), - 10f64)] .into_iter().collect() }), ("ItemMKIICrowbar".into(), - Recipe { tier : MachineTier::TierTwo, time : 10f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Electrum".into(), 5f64), ("Iron".into(), - 5f64)] .into_iter().collect() }), ("ItemMKIIDrill".into(), Recipe - { tier : MachineTier::TierTwo, time : 10f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Copper".into(), 5f64), ("Electrum".into(), 5f64), ("Iron" - .into(), 5f64)] .into_iter().collect() }), ("ItemMKIIDuctTape" - .into(), Recipe { tier : MachineTier::TierTwo, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Electrum".into(), 1f64), ("Iron".into(), - 2f64)] .into_iter().collect() }), ("ItemMKIIMiningDrill".into(), - Recipe { tier : MachineTier::TierTwo, time : 5f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 2f64), ("Electrum" - .into(), 5f64), ("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemMKIIScrewdriver".into(), Recipe { tier : - MachineTier::TierTwo, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Electrum".into(), 2f64), ("Iron".into(), 2f64)] - .into_iter().collect() }), ("ItemMKIIWireCutters".into(), Recipe - { tier : MachineTier::TierTwo, time : 5f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Electrum".into(), 5f64), ("Iron".into(), 3f64)] - .into_iter().collect() }), ("ItemMKIIWrench".into(), Recipe { - tier : MachineTier::TierTwo, time : 10f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Electrum".into(), 3f64), ("Iron".into(), 3f64)] - .into_iter().collect() }), ("ItemMarineBodyArmor".into(), Recipe - { tier : MachineTier::TierOne, time : 60f64, energy : 3000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Nickel".into(), 10f64), ("Silicon".into(), 10f64), - ("Steel".into(), 20f64)] .into_iter().collect() }), - ("ItemMarineHelmet".into(), Recipe { tier : MachineTier::TierOne, - time : 45f64, energy : 1750f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Gold".into(), - 4f64), ("Silicon".into(), 4f64), ("Steel".into(), 8f64)] - .into_iter().collect() }), ("ItemMiningBackPack".into(), Recipe { - tier : MachineTier::TierOne, time : 8f64, energy : 800f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 6f64)] .into_iter().collect() }), - ("ItemMiningBelt".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 3f64)] .into_iter().collect() }), ("ItemMiningBeltMKII".into(), - Recipe { tier : MachineTier::TierTwo, time : 10f64, energy : - 1000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Constantan".into(), 5f64), ("Steel" - .into(), 10f64)] .into_iter().collect() }), ("ItemMiningDrill" - .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, - energy : 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron".into(), - 3f64)] .into_iter().collect() }), ("ItemMiningDrillHeavy".into(), - Recipe { tier : MachineTier::TierTwo, time : 30f64, energy : - 2500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 4i64, reagents : vec![("Electrum".into(), 5f64), ("Invar".into(), - 10f64), ("Solder".into(), 10f64), ("Steel".into(), 10f64)] - .into_iter().collect() }), ("ItemMiningDrillPneumatic".into(), - Recipe { tier : MachineTier::TierOne, time : 20f64, energy : - 2000f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 4f64), ("Solder".into(), - 4f64), ("Steel".into(), 6f64)] .into_iter().collect() }), - ("ItemMkIIToolbelt".into(), Recipe { tier : MachineTier::TierTwo, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 2i64, reagents : vec![("Constantan" - .into(), 5f64), ("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemNVG".into(), Recipe { tier : MachineTier::TierOne, time : - 45f64, energy : 2750f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Hastelloy" - .into(), 10f64), ("Silicon".into(), 5f64), ("Steel".into(), - 5f64)] .into_iter().collect() }), ("ItemPickaxe".into(), Recipe { - tier : MachineTier::TierOne, time : 1f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 1f64), ("Iron".into(), 2f64)] .into_iter() - .collect() }), ("ItemPlantSampler".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 5f64), ("Iron".into(), 5f64)] .into_iter() - .collect() }), ("ItemRemoteDetonator".into(), Recipe { tier : - MachineTier::TierOne, time : 4.5f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Gold".into(), 1f64), ("Iron".into(), 3f64)] .into_iter() - .collect() }), ("ItemReusableFireExtinguisher".into(), Recipe { - tier : MachineTier::TierOne, time : 20f64, energy : 1000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Steel".into(), 5f64)] .into_iter().collect() }), - ("ItemRoadFlare".into(), Recipe { tier : MachineTier::TierOne, - time : 1f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 1f64)] .into_iter().collect() }), ("ItemScrewdriver".into(), - Recipe { tier : MachineTier::TierOne, time : 10f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 2f64)] .into_iter() - .collect() }), ("ItemSensorLenses".into(), Recipe { tier : - MachineTier::TierTwo, time : 45f64, energy : 3500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 3i64, reagents : - vec![("Inconel".into(), 5f64), ("Silicon".into(), 5f64), ("Steel" - .into(), 5f64)] .into_iter().collect() }), - ("ItemSensorProcessingUnitCelestialScanner".into(), Recipe { tier - : MachineTier::TierTwo, time : 15f64, energy : 100f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 5f64), ("Silicon".into(), 5f64)] .into_iter().collect() - }), ("ItemSensorProcessingUnitMesonScanner".into(), Recipe { tier - : MachineTier::TierTwo, time : 15f64, energy : 100f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 5f64), ("Silicon".into(), 5f64)] .into_iter().collect() - }), ("ItemSensorProcessingUnitOreScanner".into(), Recipe { tier : - MachineTier::TierTwo, time : 15f64, energy : 100f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron" - .into(), 5f64), ("Silicon".into(), 5f64)] .into_iter().collect() - }), ("ItemSpaceHelmet".into(), Recipe { tier : - MachineTier::TierOne, time : 15f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)] .into_iter() - .collect() }), ("ItemSpacepack".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 2f64), ("Iron".into(), 5f64)] .into_iter() - .collect() }), ("ItemSprayCanBlack".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemSprayCanBlue".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 1f64)] .into_iter().collect() }), ("ItemSprayCanBrown".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 1f64)] .into_iter() - .collect() }), ("ItemSprayCanGreen".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemSprayCanGrey".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 1f64)] .into_iter().collect() }), ("ItemSprayCanKhaki".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 1f64)] .into_iter() - .collect() }), ("ItemSprayCanOrange".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemSprayCanPink".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 1f64)] .into_iter().collect() }), ("ItemSprayCanPurple".into(), - Recipe { tier : MachineTier::TierOne, time : 5f64, energy : - 500f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 1i64, reagents : vec![("Iron".into(), 1f64)] .into_iter() - .collect() }), ("ItemSprayCanRed".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemSprayCanWhite".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemSprayCanYellow".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemSprayGun".into(), Recipe { tier : MachineTier::TierTwo, - time : 10f64, energy : 2000f64, temperature : RecipeRange { start - : 1f64, stop : 80000f64, is_valid : false }, pressure : - RecipeRange { start : 0f64, stop : 1000000f64, is_valid : false - }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 3i64, reagents : vec![("Invar" - .into(), 5f64), ("Silicon".into(), 10f64), ("Steel".into(), - 10f64)] .into_iter().collect() }), ("ItemTerrainManipulator" - .into(), Recipe { tier : MachineTier::TierOne, time : 15f64, - energy : 600f64, temperature : RecipeRange { start : 1f64, stop : - 80000f64, is_valid : false }, pressure : RecipeRange { start : - 0f64, stop : 1000000f64, is_valid : false }, required_mix : - RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : - false, reagents : vec![] .into_iter().collect() }, count_types : - 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold".into(), - 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }), - ("ItemToolBelt".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 3f64)] .into_iter().collect() }), ("ItemWearLamp".into(), Recipe - { tier : MachineTier::TierOne, time : 15f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)] .into_iter() - .collect() }), ("ItemWeldingTorch".into(), Recipe { tier : - MachineTier::TierOne, time : 10f64, energy : 500f64, temperature - : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false - }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Copper".into(), 1f64), ("Iron".into(), 3f64)] .into_iter() - .collect() }), ("ItemWireCutters".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Iron".into(), 3f64)] .into_iter().collect() }), - ("ItemWrench".into(), Recipe { tier : MachineTier::TierOne, time - : 10f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), - 3f64)] .into_iter().collect() }), ("ToyLuna".into(), Recipe { - tier : MachineTier::TierOne, time : 10f64, energy : 500f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 2i64, reagents : - vec![("Gold".into(), 1f64), ("Iron".into(), 5f64)] .into_iter() - .collect() }), ("UniformCommander".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 25f64)] .into_iter().collect() }), - ("UniformMarine".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : - 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange - { start : 0f64, stop : 1000000f64, is_valid : false }, - required_mix : RecipeGasMix { rule : 0i64, is_any : true, - is_any_to_remove : false, reagents : vec![] .into_iter() - .collect() }, count_types : 1i64, reagents : vec![("Silicon" - .into(), 10f64)] .into_iter().collect() }), - ("UniformOrangeJumpSuit".into(), Recipe { tier : - MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : - RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, - pressure : RecipeRange { start : 0f64, stop : 1000000f64, - is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, - is_any : true, is_any_to_remove : false, reagents : vec![] - .into_iter().collect() }, count_types : 1i64, reagents : - vec![("Silicon".into(), 10f64)] .into_iter().collect() }), - ("WeaponPistolEnergy".into(), Recipe { tier : - MachineTier::TierTwo, time : 120f64, energy : 3000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 4i64, reagents : - vec![("Electrum".into(), 20f64), ("Gold".into(), 10f64), - ("Solder".into(), 10f64), ("Steel".into(), 10f64)] .into_iter() - .collect() }), ("WeaponRifleEnergy".into(), Recipe { tier : - MachineTier::TierTwo, time : 240f64, energy : 10000f64, - temperature : RecipeRange { start : 1f64, stop : 80000f64, - is_valid : false }, pressure : RecipeRange { start : 0f64, stop : - 1000000f64, is_valid : false }, required_mix : RecipeGasMix { - rule : 0i64, is_any : true, is_any_to_remove : false, reagents : - vec![] .into_iter().collect() }, count_types : 6i64, reagents : - vec![("Constantan".into(), 10f64), ("Electrum".into(), 20f64), - ("Gold".into(), 10f64), ("Invar".into(), 10f64), ("Solder" - .into(), 10f64), ("Steel".into(), 20f64)] .into_iter().collect() - }) - ] - .into_iter() - .collect(), - }), - memory: MemoryInfo { - instructions: Some( - vec![ - ("DeviceSetLock".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" - .into(), typ : "PrinterInstruction".into(), value : 6i64 }), - ("EjectAllReagents".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 8i64 }), - ("EjectReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" - .into(), typ : "PrinterInstruction".into(), value : 7i64 }), - ("ExecuteRecipe".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 2i64 }), - ("JumpIfNextInvalid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 4i64 }), - ("JumpToAddress".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 5i64 }), - ("MissingRecipeReagent".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" - .into(), typ : "PrinterInstruction".into(), value : 9i64 }), - ("StackPointer".into(), Instruction { description : - "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" - .into(), typ : "PrinterInstruction".into(), value : 1i64 }), - ("WaitUntilNextValid".into(), Instruction { description : - "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" - .into(), typ : "PrinterInstruction".into(), value : 3i64 }) - ] - .into_iter() - .collect(), - ), - memory_access: MemoryAccess::ReadWrite, - memory_size: 64u32, - }, - } - .into(), - ), - ( - 1473807953i32, - StructureSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTorpedoRack".into(), - prefab_hash: 1473807953i32, - desc: "".into(), - name: "Torpedo Rack".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "Torpedo".into(), typ : Class::Torpedo }, SlotInfo - { name : "Torpedo".into(), typ : Class::Torpedo }, SlotInfo { name : - "Torpedo".into(), typ : Class::Torpedo }, SlotInfo { name : "Torpedo" - .into(), typ : Class::Torpedo }, SlotInfo { name : "Torpedo".into(), - typ : Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ : - Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ : - Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ : - Class::Torpedo } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1570931620i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTraderWaypoint".into(), - prefab_hash: 1570931620i32, - desc: "".into(), - name: "Trader Waypoint".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1423212473i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTransformer".into(), - prefab_hash: -1423212473i32, - desc: "The large Norsec transformer is a critical component of extended electrical networks, controlling the maximum power that will flow down a cable. To prevent overloading, output can be set from 0 to 50,000W. \nNote that transformers operate as data isolators, preventing data flowing into any network beyond it." - .into(), - name: "Transformer (Large)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1065725831i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTransformerMedium".into(), - prefab_hash: -1065725831i32, - desc: "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it." - .into(), - name: "Transformer (Medium)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 833912764i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTransformerMediumReversed".into(), - prefab_hash: 833912764i32, - desc: "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it." - .into(), - name: "Transformer Reversed (Medium)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -890946730i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTransformerSmall".into(), - prefab_hash: -890946730i32, - desc: "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it." - .into(), - name: "Transformer (Small)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::Output } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1054059374i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTransformerSmallReversed".into(), - prefab_hash: 1054059374i32, - desc: "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it." - .into(), - name: "Transformer Reversed (Small)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1282191063i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTurbineGenerator".into(), - prefab_hash: 1282191063i32, - desc: "".into(), - name: "Turbine Generator".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PowerGeneration, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1310794736i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureTurboVolumePump".into(), - prefab_hash: 1310794736i32, - desc: "Shifts 10 times more gas than a basic Volume Pump, with a mode that can be set to flow in either direction." - .into(), - name: "Turbo Volume Pump (Gas)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, - MemoryAccess::ReadWrite), (LogicType::Maximum, - MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Right".into()), (1u32, "Left".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 750118160i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureUnloader".into(), - prefab_hash: 750118160i32, - desc: "The Xigo Re:Gurge is a handy unit for unloading any items inserted into it, and feeding them into a chute network. For instance, if you add a full Mining Belt, the Re:Gurge will empty a mining belt of its contents, insert them into the chute network, then insert the mining belt itself. A Sorter is recommended to reclaim the mining belt.\n\nOutput = 0 exporting the main item\nOutput = 1 exporting items inside and eventually the main item." - .into(), - name: "Unloader".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::Output, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1622183451i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureUprightWindTurbine".into(), - prefab_hash: 1622183451i32, - desc: "Norsec\'s basic wind turbine is an easily fabricated, rapidly deployed design that is strong enough to withstand the worst that environments can throw at it. \nWhile the wind turbine is optimized to produce power even on low atmosphere worlds (up to 200W), it performs best in denser environments. Output varies with wind speed, and during storms, may increase dramatically (up to 800W), so be careful to design your power networks with that in mind." - .into(), - name: "Upright Wind Turbine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PowerGeneration, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -692036078i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureValve".into(), - prefab_hash: -692036078i32, - desc: "".into(), - name: "Valve".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -443130773i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureVendingMachine".into(), - prefab_hash: -443130773i32, - desc: "The Xigo-designed \'Slot Mate\' vending machine allows storage of almost any item, while also operating as a distribution point for working with Traders. You cannot trade without a vending machine, or its more advanced equivalent, the Refrigerated Vending Machine. Each vending machine can hold up to 100 stacks." - .into(), - name: "Vending Machine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![] - .into_iter().collect()), (4u32, vec![] .into_iter().collect()), - (5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter() - .collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![] - .into_iter().collect()), (9u32, vec![] .into_iter().collect()), - (10u32, vec![] .into_iter().collect()), (11u32, vec![] - .into_iter().collect()), (12u32, vec![] .into_iter().collect()), - (13u32, vec![] .into_iter().collect()), (14u32, vec![] - .into_iter().collect()), (15u32, vec![] .into_iter().collect()), - (16u32, vec![] .into_iter().collect()), (17u32, vec![] - .into_iter().collect()), (18u32, vec![] .into_iter().collect()), - (19u32, vec![] .into_iter().collect()), (20u32, vec![] - .into_iter().collect()), (21u32, vec![] .into_iter().collect()), - (22u32, vec![] .into_iter().collect()), (23u32, vec![] - .into_iter().collect()), (24u32, vec![] .into_iter().collect()), - (25u32, vec![] .into_iter().collect()), (26u32, vec![] - .into_iter().collect()), (27u32, vec![] .into_iter().collect()), - (28u32, vec![] .into_iter().collect()), (29u32, vec![] - .into_iter().collect()), (30u32, vec![] .into_iter().collect()), - (31u32, vec![] .into_iter().collect()), (32u32, vec![] - .into_iter().collect()), (33u32, vec![] .into_iter().collect()), - (34u32, vec![] .into_iter().collect()), (35u32, vec![] - .into_iter().collect()), (36u32, vec![] .into_iter().collect()), - (37u32, vec![] .into_iter().collect()), (38u32, vec![] - .into_iter().collect()), (39u32, vec![] .into_iter().collect()), - (40u32, vec![] .into_iter().collect()), (41u32, vec![] - .into_iter().collect()), (42u32, vec![] .into_iter().collect()), - (43u32, vec![] .into_iter().collect()), (44u32, vec![] - .into_iter().collect()), (45u32, vec![] .into_iter().collect()), - (46u32, vec![] .into_iter().collect()), (47u32, vec![] - .into_iter().collect()), (48u32, vec![] .into_iter().collect()), - (49u32, vec![] .into_iter().collect()), (50u32, vec![] - .into_iter().collect()), (51u32, vec![] .into_iter().collect()), - (52u32, vec![] .into_iter().collect()), (53u32, vec![] - .into_iter().collect()), (54u32, vec![] .into_iter().collect()), - (55u32, vec![] .into_iter().collect()), (56u32, vec![] - .into_iter().collect()), (57u32, vec![] .into_iter().collect()), - (58u32, vec![] .into_iter().collect()), (59u32, vec![] - .into_iter().collect()), (60u32, vec![] .into_iter().collect()), - (61u32, vec![] .into_iter().collect()), (62u32, vec![] - .into_iter().collect()), (63u32, vec![] .into_iter().collect()), - (64u32, vec![] .into_iter().collect()), (65u32, vec![] - .into_iter().collect()), (66u32, vec![] .into_iter().collect()), - (67u32, vec![] .into_iter().collect()), (68u32, vec![] - .into_iter().collect()), (69u32, vec![] .into_iter().collect()), - (70u32, vec![] .into_iter().collect()), (71u32, vec![] - .into_iter().collect()), (72u32, vec![] .into_iter().collect()), - (73u32, vec![] .into_iter().collect()), (74u32, vec![] - .into_iter().collect()), (75u32, vec![] .into_iter().collect()), - (76u32, vec![] .into_iter().collect()), (77u32, vec![] - .into_iter().collect()), (78u32, vec![] .into_iter().collect()), - (79u32, vec![] .into_iter().collect()), (80u32, vec![] - .into_iter().collect()), (81u32, vec![] .into_iter().collect()), - (82u32, vec![] .into_iter().collect()), (83u32, vec![] - .into_iter().collect()), (84u32, vec![] .into_iter().collect()), - (85u32, vec![] .into_iter().collect()), (86u32, vec![] - .into_iter().collect()), (87u32, vec![] .into_iter().collect()), - (88u32, vec![] .into_iter().collect()), (89u32, vec![] - .into_iter().collect()), (90u32, vec![] .into_iter().collect()), - (91u32, vec![] .into_iter().collect()), (92u32, vec![] - .into_iter().collect()), (93u32, vec![] .into_iter().collect()), - (94u32, vec![] .into_iter().collect()), (95u32, vec![] - .into_iter().collect()), (96u32, vec![] .into_iter().collect()), - (97u32, vec![] .into_iter().collect()), (98u32, vec![] - .into_iter().collect()), (99u32, vec![] .into_iter().collect()), - (100u32, vec![] .into_iter().collect()), (101u32, vec![] - .into_iter().collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::Ratio, MemoryAccess::Read), - (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::RequestHash, - MemoryAccess::ReadWrite), (LogicType::ClearMemory, - MemoryAccess::Write), (LogicType::ExportCount, - MemoryAccess::Read), (LogicType::ImportCount, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { - name : "Export".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ - : Class::None }, SlotInfo { name : "Storage".into(), typ : - Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None - }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo - { name : "Storage".into(), typ : Class::None }, SlotInfo { name : - "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" - .into(), typ : Class::None } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::Chute, role : ConnectionRole::Output }, - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -321403609i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureVolumePump".into(), - prefab_hash: -321403609i32, - desc: "The volume pump pumps pumpable gases. It also separates out pipe networks into separate networks." - .into(), - name: "Volume Pump".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Pipe, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -858143148i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallArch".into(), - prefab_hash: -858143148i32, - desc: "".into(), - name: "Wall (Arch)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1649708822i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallArchArrow".into(), - prefab_hash: 1649708822i32, - desc: "".into(), - name: "Wall (Arch Arrow)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1794588890i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallArchCornerRound".into(), - prefab_hash: 1794588890i32, - desc: "".into(), - name: "Wall (Arch Corner Round)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1963016580i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallArchCornerSquare".into(), - prefab_hash: -1963016580i32, - desc: "".into(), - name: "Wall (Arch Corner Square)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1281911841i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallArchCornerTriangle".into(), - prefab_hash: 1281911841i32, - desc: "".into(), - name: "Wall (Arch Corner Triangle)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1182510648i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallArchPlating".into(), - prefab_hash: 1182510648i32, - desc: "".into(), - name: "Wall (Arch Plating)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 782529714i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallArchTwoTone".into(), - prefab_hash: 782529714i32, - desc: "".into(), - name: "Wall (Arch Two Tone)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -739292323i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallCooler".into(), - prefab_hash: -739292323i32, - desc: "The Xigo Freezy Boi wall cooler complements the wall heater, which can only raise the temperature. The wall cooler functions by drawing heat from the surrounding atmosphere and adding that heat into its pipe network.\nIn order to run the wall cooler properly, you will need to connect pipes to the wall cooler and fill the connected pipe network with any type of gas. The gas\'s heat capacity and volume will determine how fast it reacts to temperature changes.\n\nEFFICIENCY\nThe higher the difference in temperature between the gas stored in the pipes and the room, the less efficient the wall cooler will be. So to keep the wall cooler running at an acceptable efficiency you will need to get rid of the heat that accumulates in the pipes connected to it. A common practice would be to run the pipes to the outside and use radiators on the outside section of the pipes to get rid of the heat.\nThe less efficient the wall cooler, the less power it consumes. It will consume 1010W at max efficiency. The wall cooler can be controlled by logic chips to run when the temperature hits a certain degree.\nERRORS\nIf the wall cooler is flashing an error then it is missing one of the following:\n\n- Pipe connection to the wall cooler.\n- Gas in the connected pipes, or pressure is too low.\n- Atmosphere in the surrounding environment or pressure is too low.\n\nFor more information about how to control temperatures, consult the temperature control Guides page." - .into(), - name: "Wall Cooler".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Pipe, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1635864154i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallFlat".into(), - prefab_hash: 1635864154i32, - desc: "".into(), - name: "Wall (Flat)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 898708250i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallFlatCornerRound".into(), - prefab_hash: 898708250i32, - desc: "".into(), - name: "Wall (Flat Corner Round)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 298130111i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallFlatCornerSquare".into(), - prefab_hash: 298130111i32, - desc: "".into(), - name: "Wall (Flat Corner Square)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2097419366i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallFlatCornerTriangle".into(), - prefab_hash: 2097419366i32, - desc: "".into(), - name: "Wall (Flat Corner Triangle)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1161662836i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallFlatCornerTriangleFlat".into(), - prefab_hash: -1161662836i32, - desc: "".into(), - name: "Wall (Flat Corner Triangle Flat)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1979212240i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallGeometryCorner".into(), - prefab_hash: 1979212240i32, - desc: "".into(), - name: "Wall (Geometry Corner)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1049735537i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallGeometryStreight".into(), - prefab_hash: 1049735537i32, - desc: "".into(), - name: "Wall (Geometry Straight)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1602758612i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallGeometryT".into(), - prefab_hash: 1602758612i32, - desc: "".into(), - name: "Wall (Geometry T)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1427845483i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallGeometryTMirrored".into(), - prefab_hash: -1427845483i32, - desc: "".into(), - name: "Wall (Geometry T Mirrored)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 24258244i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallHeater".into(), - prefab_hash: 24258244i32, - desc: "The Xigo wall heater is a simple device that can be installed on a wall or frame and connected to power. When switched on, it will start heating the surrounding environment. It consumes 1010W of power and can be controlled by logic chips to run when the temperature hits a certain level." - .into(), - name: "Wall Heater".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1287324802i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallIron".into(), - prefab_hash: 1287324802i32, - desc: "".into(), - name: "Iron Wall (Type 1)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1485834215i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallIron02".into(), - prefab_hash: 1485834215i32, - desc: "".into(), - name: "Iron Wall (Type 2)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 798439281i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallIron03".into(), - prefab_hash: 798439281i32, - desc: "".into(), - name: "Iron Wall (Type 3)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1309433134i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallIron04".into(), - prefab_hash: -1309433134i32, - desc: "".into(), - name: "Iron Wall (Type 4)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1492930217i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallLargePanel".into(), - prefab_hash: 1492930217i32, - desc: "".into(), - name: "Wall (Large Panel)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -776581573i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallLargePanelArrow".into(), - prefab_hash: -776581573i32, - desc: "".into(), - name: "Wall (Large Panel Arrow)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1860064656i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallLight".into(), - prefab_hash: -1860064656i32, - desc: "".into(), - name: "Wall Light".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1306415132i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallLightBattery".into(), - prefab_hash: -1306415132i32, - desc: "".into(), - name: "Wall Light (Battery)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1590330637i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedArch".into(), - prefab_hash: 1590330637i32, - desc: "".into(), - name: "Wall (Padded Arch)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1126688298i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedArchCorner".into(), - prefab_hash: -1126688298i32, - desc: "".into(), - name: "Wall (Padded Arch Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1171987947i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedArchLightFittingTop".into(), - prefab_hash: 1171987947i32, - desc: "".into(), - name: "Wall (Padded Arch Light Fitting Top)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1546743960i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedArchLightsFittings".into(), - prefab_hash: -1546743960i32, - desc: "".into(), - name: "Wall (Padded Arch Lights Fittings)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -155945899i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedCorner".into(), - prefab_hash: -155945899i32, - desc: "".into(), - name: "Wall (Padded Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1183203913i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedCornerThin".into(), - prefab_hash: 1183203913i32, - desc: "".into(), - name: "Wall (Padded Corner Thin)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 8846501i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedNoBorder".into(), - prefab_hash: 8846501i32, - desc: "".into(), - name: "Wall (Padded No Border)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 179694804i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedNoBorderCorner".into(), - prefab_hash: 179694804i32, - desc: "".into(), - name: "Wall (Padded No Border Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1611559100i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedThinNoBorder".into(), - prefab_hash: -1611559100i32, - desc: "".into(), - name: "Wall (Padded Thin No Border)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1769527556i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedThinNoBorderCorner".into(), - prefab_hash: 1769527556i32, - desc: "".into(), - name: "Wall (Padded Thin No Border Corner)".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2087628940i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedWindow".into(), - prefab_hash: 2087628940i32, - desc: "".into(), - name: "Wall (Padded Window)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -37302931i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddedWindowThin".into(), - prefab_hash: -37302931i32, - desc: "".into(), - name: "Wall (Padded Window Thin)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 635995024i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPadding".into(), - prefab_hash: 635995024i32, - desc: "".into(), - name: "Wall (Padding)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1243329828i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddingArchVent".into(), - prefab_hash: -1243329828i32, - desc: "".into(), - name: "Wall (Padding Arch Vent)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 2024882687i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddingLightFitting".into(), - prefab_hash: 2024882687i32, - desc: "".into(), - name: "Wall (Padding Light Fitting)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1102403554i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPaddingThin".into(), - prefab_hash: -1102403554i32, - desc: "".into(), - name: "Wall (Padding Thin)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 26167457i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallPlating".into(), - prefab_hash: 26167457i32, - desc: "".into(), - name: "Wall (Plating)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 619828719i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallSmallPanelsAndHatch".into(), - prefab_hash: 619828719i32, - desc: "".into(), - name: "Wall (Small Panels And Hatch)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -639306697i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallSmallPanelsArrow".into(), - prefab_hash: -639306697i32, - desc: "".into(), - name: "Wall (Small Panels Arrow)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 386820253i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallSmallPanelsMonoChrome".into(), - prefab_hash: 386820253i32, - desc: "".into(), - name: "Wall (Small Panels Mono Chrome)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1407480603i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallSmallPanelsOpen".into(), - prefab_hash: -1407480603i32, - desc: "".into(), - name: "Wall (Small Panels Open)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 1709994581i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallSmallPanelsTwoTone".into(), - prefab_hash: 1709994581i32, - desc: "".into(), - name: "Wall (Small Panels Two Tone)".into(), - }, - structure: StructureInfo { small_grid: false }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1177469307i32, - StructureTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWallVent".into(), - prefab_hash: -1177469307i32, - desc: "Used to mix atmospheres passively between two walls.".into(), - name: "Wall Vent".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -1178961954i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWaterBottleFiller".into(), - prefab_hash: -1178961954i32, - desc: "".into(), - name: "Water Bottle Filler".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, - SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + let mut map: std::collections::BTreeMap = std::collections::BTreeMap::new(); + map.insert( + -1330388999i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardBlack".into(), + prefab_hash: -1330388999i32, + desc: "".into(), + name: "Access Card (Black)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1411327657i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardBlue".into(), + prefab_hash: -1411327657i32, + desc: "".into(), + name: "Access Card (Blue)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1412428165i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardBrown".into(), + prefab_hash: 1412428165i32, + desc: "".into(), + name: "Access Card (Brown)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1339479035i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardGray".into(), + prefab_hash: -1339479035i32, + desc: "".into(), + name: "Access Card (Gray)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -374567952i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardGreen".into(), + prefab_hash: -374567952i32, + desc: "".into(), + name: "Access Card (Green)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 337035771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardKhaki".into(), + prefab_hash: 337035771i32, + desc: "".into(), + name: "Access Card (Khaki)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -332896929i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardOrange".into(), + prefab_hash: -332896929i32, + desc: "".into(), + name: "Access Card (Orange)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 431317557i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardPink".into(), + prefab_hash: 431317557i32, + desc: "".into(), + name: "Access Card (Pink)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 459843265i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardPurple".into(), + prefab_hash: 459843265i32, + desc: "".into(), + name: "Access Card (Purple)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1713748313i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardRed".into(), + prefab_hash: -1713748313i32, + desc: "".into(), + name: "Access Card (Red)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2079959157i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardWhite".into(), + prefab_hash: 2079959157i32, + desc: "".into(), + name: "Access Card (White)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 568932536i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardYellow".into(), + prefab_hash: 568932536i32, + desc: "".into(), + name: "Access Card (Yellow)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1365789392i32, + ItemConsumerTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceChemistryStation".into(), + prefab_hash: 1365789392i32, + desc: "".into(), + name: "Chemistry Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Output".into(), typ : Class::None }] + .into_iter() + .collect(), + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemCharcoal".into(), "ItemCobaltOre".into(), "ItemFern".into(), + "ItemSilverIngot".into(), "ItemSilverOre".into(), "ItemSoyOil".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + } + .into(), + ); + map.insert( + -1683849799i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceDeskLampLeft".into(), + prefab_hash: -1683849799i32, + desc: "".into(), + name: "Appliance Desk Lamp Left".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1174360780i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceDeskLampRight".into(), + prefab_hash: 1174360780i32, + desc: "".into(), + name: "Appliance Desk Lamp Right".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1136173965i32, + ItemConsumerTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceMicrowave".into(), + prefab_hash: -1136173965i32, + desc: "While countless \'better\' ways of cooking Food have been invented in the last few hundred years, few are as durable or easy to fabricate as the OK-Zoomer microwave. Licensed from Xigo, the plans are based on a classic model from the mid-21st century, giving it a charmingly retro feel. But don\'t worry, it oscillates Water molecules more than adequately. \nJust bolt it to a Powered Bench using a Wrench to power it, follow the recipe, and you\'re cooking." + .into(), + name: "Microwave".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Output".into(), typ : Class::None }] + .into_iter() + .collect(), + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemCorn".into(), "ItemEgg".into(), "ItemFertilizedEgg".into(), + "ItemFlour".into(), "ItemMilk".into(), "ItemMushroom".into(), + "ItemPotato".into(), "ItemPumpkin".into(), "ItemRice".into(), + "ItemSoybean".into(), "ItemSoyOil".into(), "ItemTomato".into(), + "ItemSugarCane".into(), "ItemCocoaTree".into(), "ItemCocoaPowder" + .into(), "ItemSugar".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + } + .into(), + ); + map.insert( + -749191906i32, + ItemConsumerTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePackagingMachine".into(), + prefab_hash: -749191906i32, + desc: "The Xigo Cannifier requires Empty Can and cooked food to create long-lasting, easily stored sustenance. Note that the Cannifier must be bolted to a Powered Bench for power, and only accepts cooked food and tin cans.\n\nOPERATION\n\n1. Add the correct ingredients to the device via the hopper in the TOP.\n\n2. Close the device using the dropdown handle.\n\n3. Activate the device.\n\n4. Remove canned goods from the outlet in the FRONT.\n\nNote: the Cannifier will flash an error on its activation switch if you attempt to activate it before closing it.\n\n\n " + .into(), + name: "Basic Packaging Machine".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }] + .into_iter() + .collect(), + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemCookedCondensedMilk".into(), "ItemCookedCorn".into(), + "ItemCookedMushroom".into(), "ItemCookedPowderedEggs".into(), + "ItemCookedPumpkin".into(), "ItemCookedRice".into(), + "ItemCookedSoybean".into(), "ItemCookedTomato".into(), "ItemEmptyCan" + .into(), "ItemMilk".into(), "ItemPotatoBaked".into(), "ItemSoyOil" + .into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + } + .into(), + ); + map.insert( + -1339716113i32, + ItemConsumerTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePaintMixer".into(), + prefab_hash: -1339716113i32, + desc: "".into(), + name: "Paint Mixer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Output".into(), typ : Class::Bottle }] + .into_iter() + .collect(), + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemSoyOil".into(), "ReagentColorBlue".into(), "ReagentColorGreen" + .into(), "ReagentColorOrange".into(), "ReagentColorRed".into(), + "ReagentColorYellow".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + } + .into(), + ); + map.insert( + -1303038067i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePlantGeneticAnalyzer".into(), + prefab_hash: -1303038067i32, + desc: "The Genetic Analyzer can be used to process samples from the Plant Sampler. Once processed, the genetic information of the sampled plant can be viewed by clicking on the search button.\n\nIndividual Gene Value Widgets: \nMost gene values will appear as a sliding bar between a minimum value on the left and a maximum value on the right. The actual value of the gene is in the middle of the bar, in orange.\n\nMultiple Gene Value Widgets: \nFor temperature and pressure ranges, four genes appear on the same widget. The orange values underneath the bar are the minimum and maximum thresholds for growth. Outside of this range, the plant will stop growing and eventually die. The blue values underneath the bar are the minimum and maximum thresholds for ideal growth. Inside of this range, the plant will grow at maximum speed. The white values above the bar are the minimum and maximum achievable values for the growth threshold." + .into(), + name: "Plant Genetic Analyzer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Input".into(), typ : Class::Tool }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1094868323i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePlantGeneticSplicer".into(), + prefab_hash: -1094868323i32, + desc: "The Genetic Splicer can be used to copy a single gene from one \'source\' plant to another \'target\' plant of the same type. After copying, the source plant will be destroyed.\n \nTo begin splicing, place a plant or seed bag in the left slot (source) and place another plant or seed bag of the same type in the right slot (target). You can select a gene using the arrow buttons. Close the sliding door and press the green activate button. Once splicing has begun, the device will be locked until the process has finished (which will take approximately twenty minutes). If you want to cancel splicing you can power off the bench or detach the appliance as a last resort." + .into(), + name: "Plant Genetic Splicer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Source Plant".into(), typ : Class::Plant }, SlotInfo { + name : "Target Plant".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 871432335i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePlantGeneticStabilizer".into(), + prefab_hash: 871432335i32, + desc: "The Genetic Stabilizer can be used to manipulate gene stability on a specific Plants or Seeds. It has two modes Stabilize and Destabilize.\nStabilize: Increases all genes stability by 50%.\nDestabilize: Decreases all gene stability by 10% other than a chosen gene which will received decreased stability by 50%.\n " + .into(), + name: "Plant Genetic Stabilizer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Plant".into(), typ : Class::Plant }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1260918085i32, + ItemConsumerTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceReagentProcessor".into(), + prefab_hash: 1260918085i32, + desc: "Sitting somewhere between a high powered juicer and an alchemist\'s alembic, the Xigo reagent processor turns certain raw materials and food items into cooking and crafting ingredients. Indispensible in any space kitchen, just bolt it to the bench, and you\'re ready to go." + .into(), + name: "Reagent Processor".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Input".into(), typ : Class::None }, SlotInfo { name : + "Output".into(), typ : Class::None } + ] + .into_iter() + .collect(), + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemWheat".into(), "ItemSugarCane".into(), "ItemCocoaTree".into(), + "ItemSoybean".into(), "ItemFlowerBlue".into(), "ItemFlowerGreen" + .into(), "ItemFlowerOrange".into(), "ItemFlowerRed".into(), + "ItemFlowerYellow".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + } + .into(), + ); + map.insert( + 142831994i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceSeedTray".into(), + prefab_hash: 142831994i32, + desc: "The seed tray can hold up to twelve plants or seeds and can be used to facilitate fast experimentation and testing of plant genetics." + .into(), + name: "Appliance Seed Tray".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), + typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ : + Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant }, + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), + typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ : + Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant }, + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1853941363i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceTabletDock".into(), + prefab_hash: 1853941363i32, + desc: "".into(), + name: "Tablet Dock".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "".into(), typ : Class::Tool }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 221058307i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AutolathePrinterMod".into(), + prefab_hash: 221058307i32, + desc: "Apply to an Autolathe with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." + .into(), + name: "Autolathe Printer Mod".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -462415758i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Battery_Wireless_cell".into(), + prefab_hash: -462415758i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Battery Wireless Cell".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + -41519077i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Battery_Wireless_cell_Big".into(), + prefab_hash: -41519077i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Battery Wireless Cell (Big)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + -1976947556i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "CardboardBox".into(), + prefab_hash: -1976947556i32, + desc: "".into(), + name: "Cardboard Box".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Storage, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1634532552i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeAccessController".into(), + prefab_hash: -1634532552i32, + desc: "".into(), + name: "Cartridge (Access Controller)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1550278665i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeAtmosAnalyser".into(), + prefab_hash: -1550278665i32, + desc: "The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by ExMin for use with the OreCore Handheld Tablet. It displays the pressure, concentration and molar quantity of gas in rooms, tanks, or pipe networks." + .into(), + name: "Atmos Analyzer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -932136011i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeConfiguration".into(), + prefab_hash: -932136011i32, + desc: "".into(), + name: "Configuration".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1462180176i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeElectronicReader".into(), + prefab_hash: -1462180176i32, + desc: "".into(), + name: "eReader".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1957063345i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeGPS".into(), + prefab_hash: -1957063345i32, + desc: "".into(), + name: "GPS".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 872720793i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeGuide".into(), + prefab_hash: 872720793i32, + desc: "".into(), + name: "Guide".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1116110181i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeMedicalAnalyser".into(), + prefab_hash: -1116110181i32, + desc: "When added to the OreCore Handheld Tablet, Asura\'s\'s ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users." + .into(), + name: "Medical Analyzer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1606989119i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeNetworkAnalyser".into(), + prefab_hash: 1606989119i32, + desc: "A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied Sinotai design, it\'s used in conjunction with the OreCore Handheld Tablet." + .into(), + name: "Network Analyzer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1768732546i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeOreScanner".into(), + prefab_hash: -1768732546i32, + desc: "When inserted into a Handheld Tablet the scanner will display minerals hidden underground on the tablet." + .into(), + name: "Ore Scanner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1738236580i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeOreScannerColor".into(), + prefab_hash: 1738236580i32, + desc: "When inserted into a Handheld Tablet the scanner will display minerals hidden underground in different colors on the tablet." + .into(), + name: "Ore Scanner (Color)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1101328282i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgePlantAnalyser".into(), + prefab_hash: 1101328282i32, + desc: "".into(), + name: "Cartridge Plant Analyser".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 81488783i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeTracker".into(), + prefab_hash: 81488783i32, + desc: "".into(), + name: "Tracker".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1633663176i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardAdvAirlockControl".into(), + prefab_hash: 1633663176i32, + desc: "".into(), + name: "Advanced Airlock".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1618019559i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardAirControl".into(), + prefab_hash: 1618019559i32, + desc: "When added to a Console, air control circuit boards allow you to program an Active Vent. As with small dogs and 83% of people, air control circuits have only three modes: Pressure, Draft and Offline. Pressure mode maintains a 100kPa atmosphere, switching the active vent between inward and outward flow until target pressure is achieved. Draft mode allows you to pair active vents to circulate air. Offline mode deactivates the vent. " + .into(), + name: "Air Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 912176135i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardAirlockControl".into(), + prefab_hash: 912176135i32, + desc: "Rumored to have been first sketched on a Norsec toilet wall by a disgruntled engineer, the Exgress airlock control circuit board\u{2019}s versatility and ease of fabrication has made it the Stationeers control system of choice for Airlock cycling protocols. \n\nTo enter setup mode, insert the board into a Console along with a data disk. In this mode, you can see all data-accessible objects currently connected to the Console. Doors, lights, gas sensors and slave consoles can be selected (highlighted green), and will be controlled once the data disk is removed." + .into(), + name: "Airlock".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -412104504i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardCameraDisplay".into(), + prefab_hash: -412104504i32, + desc: "Surveillance is sometimes necessary when building bases in highly hostile environments. The camera display circuit board allows wary Stationeers to turn a Console into a security display when connected to a Camera." + .into(), + name: "Camera Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 855694771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardDoorControl".into(), + prefab_hash: 855694771i32, + desc: "A basic tool of Stationeer base construction, this circuit board provides a way to open and close a Composite Door, Blast Door or Glass Door remotely, when connected to a Console. This system can be further linked to Motion Sensor to create automatic doors." + .into(), + name: "Door Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -82343730i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardGasDisplay".into(), + prefab_hash: -82343730i32, + desc: "Information is power. Place this circuitboard into a Console to create a display that shows gas pressure or temperature of any connected tank, storage cannister, Kit (Pipe Analyzer) or Kit (Gas Sensor)." + .into(), + name: "Gas Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1344368806i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardGraphDisplay".into(), + prefab_hash: 1344368806i32, + desc: "".into(), + name: "Graph Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1633074601i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardHashDisplay".into(), + prefab_hash: 1633074601i32, + desc: "".into(), + name: "Hash Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1134148135i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardModeControl".into(), + prefab_hash: -1134148135i32, + desc: "Can\'t decide which mode you love most? This circuit board allows you to switch any connected device between operation modes." + .into(), + name: "Mode Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1923778429i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardPowerControl".into(), + prefab_hash: -1923778429i32, + desc: "Under distant suns and demanding environments, Stationeer systems need to balance reliability, resilience and versatility. The power control board allows remote enabling and disabling of selected devices, disconnecting manual operation. \n \nThe circuit board has two modes: \'Link\' switches all devices on or off; \'Toggle\' switches each device to their alternate state. " + .into(), + name: "Power Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2044446819i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardShipDisplay".into(), + prefab_hash: -2044446819i32, + desc: "When the original Stationeer Handbook collapsed under its own weight into a singularity, certain information was irretrievably lost. Amongst this mysterious corpus of knowledge is the exact purpose of the ship display board." + .into(), + name: "Ship Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2020180320i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardSolarControl".into(), + prefab_hash: 2020180320i32, + desc: "Adding a solar control board to a Console lets you manually control the horizontal and vertical angles of any connected Solar Panel." + .into(), + name: "Solar Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1228794916i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "CompositeRollCover".into(), + prefab_hash: 1228794916i32, + desc: "0.Operate\n1.Logic".into(), + name: "Composite Roll Cover".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 8709219i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "CrateMkII".into(), + prefab_hash: 8709219i32, + desc: "A more heavily reinforced version of the iconic Dynamic Crate, the Crate Mk II is resistant to incredibly high pressures and temperatures. Short of disposing of it in a black hole, the Mk II is about as safe as luggage gets." + .into(), + name: "Crate Mk II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Storage, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1531087544i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "DecayedFood".into(), + prefab_hash: 1531087544i32, + desc: "When your food decays, it turns into this. ODA scientists have attempted to determine the exact constituents of this substance, but it remains evasive and mysterious. Suffice to say, eating it is a bad idea. Research has determined, however, that The exact speed of decay varies individually by:\n\n- TEMPERATURE - Refrigeration will slow decay, but many foods will be damaged by exposure to extreme low pressure, as well as extreme heat. The optimum temperature is 0 kelvin (-272 C).\n\n- FOOD TYPE - Each food type has its own decay properties. Tomato Soup lasts a lot longer than a Tomato, for instance.\n\n- PRESSURE - Food decays faster when the pressure drops below 1 atmosphere (101kPa). Decay happens exponentially more quickly as the atmosphere approaches a perfect vacuum. There is no effect from higher pressures. \n\n- ATMOSPHERE - Different gases can slow and accelerate the decay process. The process will take account of respective gas ratios in mixed atmospheres in calculating the decay modifier. The following rates apply across all foods:\n\n> Oxygen x 1.3\n> Nitrogen x 0.6\n> Carbon Dioxide x 0.8\n> Volatiles x 1\n> Pollutant x 3\n> Nitrous Oxide x 1.5\n> Steam x 2\n> Vacuum (see PRESSURE above)\n\n" + .into(), + name: "Decayed Food".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 25u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1844430312i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "DeviceLfoVolume".into(), + prefab_hash: -1844430312i32, + desc: "The low frequency oscillator (or LFO) makes everything sound dark, twisted and crunchy by altering the shape of the waves output by a Logic Step Sequencer.\n \nTo set up an LFO:\n\n1. Place the LFO unit\n2. Set the LFO output to a Passive Speaker\n2. Set a sequencers\' output to LFO - so the sequencer\'s signal runs through the LFO to a speaker.\n3. Place a Stop Watch or use an existing one, then use a Logic Writer to write it to the LFO.\n4. Use another logic writer to write the BPM to the LFO.\n5. You are ready. This is the future. You\'re in space. Make it sound cool.\n\nFor more info, check out the music page." + .into(), + name: "Low frequency oscillator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Time, MemoryAccess::ReadWrite), (LogicType::Bpm, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Whole Note".into()), (1u32, "Half Note".into()), (2u32, + "Quarter Note".into()), (3u32, "Eighth Note".into()), (4u32, + "Sixteenth Note".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1762696475i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "DeviceStepUnit".into(), + prefab_hash: 1762696475i32, + desc: "0.C-2\n1.C#-2\n2.D-2\n3.D#-2\n4.E-2\n5.F-2\n6.F#-2\n7.G-2\n8.G#-2\n9.A-2\n10.A#-2\n11.B-2\n12.C-1\n13.C#-1\n14.D-1\n15.D#-1\n16.E-1\n17.F-1\n18.F#-1\n19.G-1\n20.G#-1\n21.A-1\n22.A#-1\n23.B-1\n24.C0\n25.C#0\n26.D0\n27.D#0\n28.E0\n29.F0\n30.F#0\n31.G0\n32.G#0\n33.A0\n34.A#0\n35.B0\n36.C1\n37.C#1\n38.D1\n39.D#1\n40.E1\n41.F1\n42.F#1\n43.G1\n44.G#1\n45.A1\n46.A#1\n47.B1\n48.C2\n49.C#2\n50.D2\n51.D#2\n52.E2\n53.F2\n54.F#2\n55.G2\n56.G#2\n57.A2\n58.A#2\n59.B2\n60.C3\n61.C#3\n62.D3\n63.D#3\n64.E3\n65.F3\n66.F#3\n67.G3\n68.G#3\n69.A3\n70.A#3\n71.B3\n72.C4\n73.C#4\n74.D4\n75.D#4\n76.E4\n77.F4\n78.F#4\n79.G4\n80.G#4\n81.A4\n82.A#4\n83.B4\n84.C5\n85.C#5\n86.D5\n87.D#5\n88.E5\n89.F5\n90.F#5\n91.G5 \n92.G#5\n93.A5\n94.A#5\n95.B5\n96.C6\n97.C#6\n98.D6\n99.D#6\n100.E6\n101.F6\n102.F#6\n103.G6\n104.G#6\n105.A6\n106.A#6\n107.B6\n108.C7\n109.C#7\n110.D7\n111.D#7\n112.E7\n113.F7\n114.F#7\n115.G7\n116.G#7\n117.A7\n118.A#7\n119.B7\n120.C8\n121.C#8\n122.D8\n123.D#8\n124.E8\n125.F8\n126.F#8\n127.G8" + .into(), + name: "Device Step Unit".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "C-2".into()), (1u32, "C#-2".into()), (2u32, "D-2" + .into()), (3u32, "D#-2".into()), (4u32, "E-2".into()), (5u32, + "F-2".into()), (6u32, "F#-2".into()), (7u32, "G-2".into()), + (8u32, "G#-2".into()), (9u32, "A-2".into()), (10u32, "A#-2" + .into()), (11u32, "B-2".into()), (12u32, "C-1".into()), (13u32, + "C#-1".into()), (14u32, "D-1".into()), (15u32, "D#-1".into()), + (16u32, "E-1".into()), (17u32, "F-1".into()), (18u32, "F#-1" + .into()), (19u32, "G-1".into()), (20u32, "G#-1".into()), (21u32, + "A-1".into()), (22u32, "A#-1".into()), (23u32, "B-1".into()), + (24u32, "C0".into()), (25u32, "C#0".into()), (26u32, "D0" + .into()), (27u32, "D#0".into()), (28u32, "E0".into()), (29u32, + "F0".into()), (30u32, "F#0".into()), (31u32, "G0".into()), + (32u32, "G#0".into()), (33u32, "A0".into()), (34u32, "A#0" + .into()), (35u32, "B0".into()), (36u32, "C1".into()), (37u32, + "C#1".into()), (38u32, "D1".into()), (39u32, "D#1".into()), + (40u32, "E1".into()), (41u32, "F1".into()), (42u32, "F#1" + .into()), (43u32, "G1".into()), (44u32, "G#1".into()), (45u32, + "A1".into()), (46u32, "A#1".into()), (47u32, "B1".into()), + (48u32, "C2".into()), (49u32, "C#2".into()), (50u32, "D2" + .into()), (51u32, "D#2".into()), (52u32, "E2".into()), (53u32, + "F2".into()), (54u32, "F#2".into()), (55u32, "G2".into()), + (56u32, "G#2".into()), (57u32, "A2".into()), (58u32, "A#2" + .into()), (59u32, "B2".into()), (60u32, "C3".into()), (61u32, + "C#3".into()), (62u32, "D3".into()), (63u32, "D#3".into()), + (64u32, "E3".into()), (65u32, "F3".into()), (66u32, "F#3" + .into()), (67u32, "G3".into()), (68u32, "G#3".into()), (69u32, + "A3".into()), (70u32, "A#3".into()), (71u32, "B3".into()), + (72u32, "C4".into()), (73u32, "C#4".into()), (74u32, "D4" + .into()), (75u32, "D#4".into()), (76u32, "E4".into()), (77u32, + "F4".into()), (78u32, "F#4".into()), (79u32, "G4".into()), + (80u32, "G#4".into()), (81u32, "A4".into()), (82u32, "A#4" + .into()), (83u32, "B4".into()), (84u32, "C5".into()), (85u32, + "C#5".into()), (86u32, "D5".into()), (87u32, "D#5".into()), + (88u32, "E5".into()), (89u32, "F5".into()), (90u32, "F#5" + .into()), (91u32, "G5 ".into()), (92u32, "G#5".into()), (93u32, + "A5".into()), (94u32, "A#5".into()), (95u32, "B5".into()), + (96u32, "C6".into()), (97u32, "C#6".into()), (98u32, "D6" + .into()), (99u32, "D#6".into()), (100u32, "E6".into()), (101u32, + "F6".into()), (102u32, "F#6".into()), (103u32, "G6".into()), + (104u32, "G#6".into()), (105u32, "A6".into()), (106u32, "A#6" + .into()), (107u32, "B6".into()), (108u32, "C7".into()), (109u32, + "C#7".into()), (110u32, "D7".into()), (111u32, "D#7".into()), + (112u32, "E7".into()), (113u32, "F7".into()), (114u32, "F#7" + .into()), (115u32, "G7".into()), (116u32, "G#7".into()), (117u32, + "A7".into()), (118u32, "A#7".into()), (119u32, "B7".into()), + (120u32, "C8".into()), (121u32, "C#8".into()), (122u32, "D8" + .into()), (123u32, "D#8".into()), (124u32, "E8".into()), (125u32, + "F8".into()), (126u32, "F#8".into()), (127u32, "G8".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 519913639i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicAirConditioner".into(), + prefab_hash: 519913639i32, + desc: "The Sinotai-designed Huxi portable air conditioner cools by drawing heat from the atmosphere and storing it, or adding heat to the atmosphere from its internal tank. With a max internal pressure of 8106kPa, its capacity is relatively limited, physics being clear on this subject. To extend its temperature storage ability, bolt the Huxi to a Tank Connector, then connect it to a pipe network supplying hot or cold gases." + .into(), + name: "Portable Air Conditioner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1941079206i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicCrate".into(), + prefab_hash: 1941079206i32, + desc: "The humble dynamic crate has become a symbol of Stationeer invention and independence. With twelve slots and handles at either end for ease of carriage, it\'s both standard issue and critical kit for cadets and Commanders alike." + .into(), + name: "Dynamic Crate".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Storage, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -2085885850i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGPR".into(), + prefab_hash: -2085885850i32, + desc: "".into(), + name: "".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1713611165i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterAir".into(), + prefab_hash: -1713611165i32, + desc: "Portable gas tanks do one thing: store gas. But there\'s lots you can do with them. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it\'s full, you can refill a Canister (Oxygen) by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere. They also attach to rovers and rockets. Alternatively, kick it over and practice barrel rolling. The possibilities are endless." + .into(), + name: "Portable Gas Tank (Air)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -322413931i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterCarbonDioxide".into(), + prefab_hash: -322413931i32, + desc: "Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or ... boom. Once it\'s full, you can refill a Canister (CO2) by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere ... of sorts." + .into(), + name: "Portable Gas Tank (CO2)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1741267161i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterEmpty".into(), + prefab_hash: -1741267161i32, + desc: "Portable gas tanks store gas. To refill one, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it\'s full, you can refill a Canister by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere." + .into(), + name: "Portable Gas Tank".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -817051527i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterFuel".into(), + prefab_hash: -817051527i32, + desc: "Portable tanks store gas. They\'re good at it. If you need to refill a tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or things get messy. You can refill a Canister (Fuel) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rover or rocket for later. It\'s really up to you." + .into(), + name: "Portable Gas Tank (Fuel)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 121951301i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterNitrogen".into(), + prefab_hash: 121951301i32, + desc: "Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you\'ll end up with Nitrogen in places you weren\'t expecting. You can refill a Canister (Nitrogen) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rover or rocket for later." + .into(), + name: "Portable Gas Tank (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 30727200i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterNitrousOxide".into(), + prefab_hash: 30727200i32, + desc: "".into(), + name: "Portable Gas Tank (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1360925836i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterOxygen".into(), + prefab_hash: 1360925836i32, + desc: "Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you\'ll be picking tank shards out of your face. You can refill a Canister (Oxygen) by attaching it to the tank\'s striped section. Or you could vent it into a sealed room to create an atmosphere. Or even paint it pink, call it Steve and fill that sad space in your heart." + .into(), + name: "Portable Gas Tank (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 396065382i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterPollutants".into(), + prefab_hash: 396065382i32, + desc: "".into(), + name: "Portable Gas Tank (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -8883951i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterRocketFuel".into(), + prefab_hash: -8883951i32, + desc: "".into(), + name: "Dynamic Gas Canister Rocket Fuel".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 108086870i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterVolatiles".into(), + prefab_hash: 108086870i32, + desc: "Portable tanks store gas. To refill one, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Don\'t fill it above 10 MPa, unless you\'re the sort who loves complicated, flammable emergencies. You can refill a Canister (Volatiles) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach to a rocket and show it around the Solar System." + .into(), + name: "Portable Gas Tank (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 197293625i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterWater".into(), + prefab_hash: 197293625i32, + desc: "This portable tank stores liquid, and liquid only. You just have to fill it up. To do this, bolt one to a Kit (Tank Connector) using a Wrench, then connect it to Liquid Pipe (Straight) to supply liquid to a network. \nTry to keep pressure under 10 MPa, or you\'ll end up wet, hurt and sorry, without any of the fun.\nYou can refill a Liquid Canister (Water) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself." + .into(), + name: "Portable Liquid Tank (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -386375420i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasTankAdvanced".into(), + prefab_hash: -386375420i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Gas Tank Mk II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1264455519i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasTankAdvancedOxygen".into(), + prefab_hash: -1264455519i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Portable Gas Tank Mk II (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -82087220i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGenerator".into(), + prefab_hash: -82087220i32, + desc: "Every Stationeer\'s best friend, the portable generator gets you up and running, fast. Fill it with a Canister (Fuel) to power up and charge a Battery Cell (Small), or attach it to a Power Connector to link it into your electrical network. It\'s pressure driven, so functions more efficiently at lower temperatures, and REALLY efficiently if supercooled. Perfecting your fuel mix also makes a big difference." + .into(), + name: "Portable Generator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister }, + SlotInfo { name : "Battery".into(), typ : Class::Battery } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 587726607i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicHydroponics".into(), + prefab_hash: 587726607i32, + desc: "".into(), + name: "Portable Hydroponics".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), + typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ : + Class::Plant }, SlotInfo { name : "Liquid Canister".into(), typ : + Class::LiquidCanister }, SlotInfo { name : "Liquid Canister".into(), typ + : Class::Plant }, SlotInfo { name : "Liquid Canister".into(), typ : + Class::Plant }, SlotInfo { name : "Liquid Canister".into(), typ : + Class::Plant }, SlotInfo { name : "Liquid Canister".into(), typ : + Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -21970188i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicLight".into(), + prefab_hash: -21970188i32, + desc: "Philippe Starck might not applaud, but this battery-powered light source undarkens the corners when illumination\'s lacking. Powered by any battery, it\'s a \'no-frills\' Xigo design that can be cheaply fabricated with the minimum of fuss. Unless you like fuss. In which case, fuss all you like." + .into(), + name: "Portable Light".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1939209112i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicLiquidCanisterEmpty".into(), + prefab_hash: -1939209112i32, + desc: "This portable tank stores liquid, and liquid only. You can bolt one to a Kit (Liquid Tank Connector) using a Wrench, then connect it to a pipe network to refill it. You can refill a Liquid Canister (Water) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself." + .into(), + name: "Portable Liquid Tank".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.025f32, + radiation_factor: 0.025f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 2130739600i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicMKIILiquidCanisterEmpty".into(), + prefab_hash: 2130739600i32, + desc: "An empty, insulated liquid Gas Canister." + .into(), + name: "Portable Liquid Tank Mk II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -319510386i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicMKIILiquidCanisterWater".into(), + prefab_hash: -319510386i32, + desc: "An insulated version of the Portable Liquid Tank Mk II (Water), for storing liquids without them gaining or losing temperature." + .into(), + name: "Portable Liquid Tank Mk II (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 755048589i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicScrubber".into(), + prefab_hash: 755048589i32, + desc: "A portable scrubber does just what it sounds like: removes specific substances from the air. For instance, attaching a Filter (Carbon Dioxide) will pull Carbon Dioxide from the surrounding atmosphere. Note that the scrubber has room for one battery and two filters, which will double its operating speed. Neat. When it reaches an internal pressure of 8106kPA, an error signal will flash on the switch, indicating it needs to be emptied. Either vent it directly, or attach it to a pipe network via a Kit (Tank Connector) and a Wrench." + .into(), + name: "Portable Air Scrubber".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name : + "Gas Filter".into(), typ : Class::GasFilter } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 106953348i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicSkeleton".into(), + prefab_hash: 106953348i32, + desc: "".into(), + name: "Skeleton".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -311170652i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ElectronicPrinterMod".into(), + prefab_hash: -311170652i32, + desc: "Apply to an Electronics Printer with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." + .into(), + name: "Electronic Printer Mod".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -110788403i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ElevatorCarrage".into(), + prefab_hash: -110788403i32, + desc: "".into(), + name: "Elevator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1730165908i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityChick".into(), + prefab_hash: 1730165908i32, + desc: "Once a chick is hatched, it gets hungry. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not." + .into(), + name: "Entity Chick".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 334097180i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityChickenBrown".into(), + prefab_hash: 334097180i32, + desc: "Like so many of its brethren, this is a chicken. A brown one. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not." + .into(), + name: "Entity Chicken Brown".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1010807532i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityChickenWhite".into(), + prefab_hash: 1010807532i32, + desc: "It\'s a chicken, as white as moondust. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not." + .into(), + name: "Entity Chicken White".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 966959649i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityRoosterBlack".into(), + prefab_hash: 966959649i32, + desc: "This is a rooster. It is black. There is dignity in this.".into(), + name: "Entity Rooster Black".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -583103395i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityRoosterBrown".into(), + prefab_hash: -583103395i32, + desc: "The common brown rooster. Don\'t let it hear you say that." + .into(), + name: "Entity Rooster Brown".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1517856652i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "Fertilizer".into(), + prefab_hash: 1517856652i32, + desc: "Fertilizer alters plant growth processes, and is created by the basic composter and the Advanced Composter using organic matter.\nFertilizer\'s affects depend on its ingredients:\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for\n\nThe effect of these ingredients depends on their respective proportions in the composter when processing is activated. " + .into(), + name: "Fertilizer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -86315541i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "FireArmSMG".into(), + prefab_hash: -86315541i32, + desc: "0.Single\n1.Auto".into(), + name: "Fire Arm SMG".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "".into(), typ : Class::Magazine }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1845441951i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Flag_ODA_10m".into(), + prefab_hash: 1845441951i32, + desc: "".into(), + name: "Flag (ODA 10m)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1159126354i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Flag_ODA_4m".into(), + prefab_hash: 1159126354i32, + desc: "".into(), + name: "Flag (ODA 4m)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1998634960i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Flag_ODA_6m".into(), + prefab_hash: 1998634960i32, + desc: "".into(), + name: "Flag (ODA 6m)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -375156130i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Flag_ODA_8m".into(), + prefab_hash: -375156130i32, + desc: "".into(), + name: "Flag (ODA 8m)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 118685786i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "FlareGun".into(), + prefab_hash: 118685786i32, + desc: "".into(), + name: "Flare Gun".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Magazine".into(), typ : Class::Flare }, SlotInfo { + name : "".into(), typ : Class::Blocked } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1840108251i32, + StructureCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "H2Combustor".into(), + prefab_hash: 1840108251i32, + desc: "Adapted slightly from its original Recurso design, the Volatiles Combustor does exactly what its name suggests - it burns a mixture of volatiles and Oxygen to create water. Extremely useful in hot or arid environments, users need to be aware that the combustor outputs considerable waste heat. The device is also less than perfectly efficient, resulting in the autoignition of volatiles in the chamber, and the production of waste gases which must be dealt with." + .into(), + name: "H2 Combustor".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 247238062i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "Handgun".into(), + prefab_hash: 247238062i32, + desc: "".into(), + name: "Handgun".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Magazine".into(), typ : Class::Magazine }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1254383185i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "HandgunMagazine".into(), + prefab_hash: 1254383185i32, + desc: "".into(), + name: "Handgun Magazine".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Magazine, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -857713709i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "HumanSkull".into(), + prefab_hash: -857713709i32, + desc: "".into(), + name: "Human Skull".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -73796547i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ImGuiCircuitboardAirlockControl".into(), + prefab_hash: -73796547i32, + desc: "".into(), + name: "Airlock (Experimental)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -842048328i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemActiveVent".into(), + prefab_hash: -842048328i32, + desc: "When constructed, this kit places an Active Vent on any support structure." + .into(), + name: "Kit (Active Vent)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1871048978i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAdhesiveInsulation".into(), + prefab_hash: 1871048978i32, + desc: "".into(), + name: "Adhesive Insulation".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1722785341i32, + ItemCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAdvancedTablet".into(), + prefab_hash: 1722785341i32, + desc: "The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Atmos Analyzer, Tracker, Medical Analyzer, Ore Scanner, eReader, and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter" + .into(), + name: "Advanced Tablet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (3u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::Volume, + MemoryAccess::ReadWrite), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: true, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Cartridge".into(), typ : Class::Cartridge }, SlotInfo { name : + "Cartridge1".into(), typ : Class::Cartridge }, SlotInfo { name : + "Programmable Chip".into(), typ : Class::ProgrammableChip } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 176446172i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAlienMushroom".into(), + prefab_hash: 176446172i32, + desc: "".into(), + name: "Alien Mushroom".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -9559091i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAmmoBox".into(), + prefab_hash: -9559091i32, + desc: "".into(), + name: "Ammo Box".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 201215010i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAngleGrinder".into(), + prefab_hash: 201215010i32, + desc: "Angles-be-gone with the trusty angle grinder.".into(), + name: "Angle Grinder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1385062886i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemArcWelder".into(), + prefab_hash: 1385062886i32, + desc: "".into(), + name: "Arc Welder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1757673317i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAreaPowerControl".into(), + prefab_hash: 1757673317i32, + desc: "This kit places a Area Power Control (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow." + .into(), + name: "Kit (Power Controller)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 412924554i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAstroloyIngot".into(), + prefab_hash: 412924554i32, + desc: "Due to the original Stationeer manual collapsing into a singularity, Astroloy recipes have been warped by spacetime contortions. The correct Astroloy recipe, as memorialized for all time in a series of charming plastic icons, is 1.0 Copper, 1.0 Cobalt, and 2.0 Steel." + .into(), + name: "Ingot (Astroloy)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Astroloy".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1662476145i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAstroloySheets".into(), + prefab_hash: -1662476145i32, + desc: "".into(), + name: "Astroloy Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 789015045i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAuthoringTool".into(), + prefab_hash: 789015045i32, + desc: "".into(), + name: "Authoring Tool".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1731627004i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAuthoringToolRocketNetwork".into(), + prefab_hash: -1731627004i32, + desc: "".into(), + name: "".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1262580790i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBasketBall".into(), + prefab_hash: -1262580790i32, + desc: "".into(), + name: "Basket Ball".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 700133157i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryCell".into(), + prefab_hash: 700133157i32, + desc: "Harnessing a design pioneered in the early 21st century, the small battery cell is the Stationeer\'s basic unit of portable electrical power. While it lacks the charge of a Battery Cell (Large) or Battery Cell (Nuclear), it has the humble advantage of being fabricated from basic resources.\n\nPOWER OUTPUT\nThe small cell stores up to 36000 watts of power." + .into(), + name: "Battery Cell (Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + -459827268i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryCellLarge".into(), + prefab_hash: -459827268i32, + desc: "First mass-produced by Xigo in 2155 on the basis of a unattributed prototype, the classic silicon anode solid-state design extends its optimum temperature range.\n\nPOWER OUTPUT\nThe large power cell can discharge 288kW of power. \n" + .into(), + name: "Battery Cell (Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + 544617306i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryCellNuclear".into(), + prefab_hash: 544617306i32, + desc: "Illegal on Earth since the Chengdu Event, Norsec nuclear power cells found a new and drastically less safety-conscious market offworld.\n\nPOWER OUTPUT\nPushing the power-weight balance to its limits, the \'nuke\' has a 2.3 megawatt charge (2304000W), reflecting its reliance on exotic superalloys." + .into(), + name: "Battery Cell (Nuclear)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + -1866880307i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryCharger".into(), + prefab_hash: -1866880307i32, + desc: "This kit produces a 5-slot Kit (Battery Charger)." + .into(), + name: "Kit (Battery Charger)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1008295833i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryChargerSmall".into(), + prefab_hash: 1008295833i32, + desc: "".into(), + name: "Battery Charger Small".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -869869491i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBeacon".into(), + prefab_hash: -869869491i32, + desc: "".into(), + name: "Tracking Beacon".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -831480639i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBiomass".into(), + prefab_hash: -831480639i32, + desc: "Diced organic material that is returned when food and organic matter is passed through the Recycler and Centrifuge. Can be burned in a Furnace into Charcoal for use in the Generator (Solid Fuel)." + .into(), + name: "Biomass".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Biomass".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 893514943i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBreadLoaf".into(), + prefab_hash: 893514943i32, + desc: "".into(), + name: "Bread Loaf".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1792787349i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCableAnalyser".into(), + prefab_hash: -1792787349i32, + desc: "".into(), + name: "Kit (Cable Analyzer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -466050668i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCableCoil".into(), + prefab_hash: -466050668i32, + desc: "Bodily metaphors are tired and anthropocentric, but it was Frida Stuppen, the first ODA Administrator, who said, \'Let the cabling be as the nerve and the vessel, transmitting power and data alike through systems we forge among the stars.\' Later commentators suggested that she was simply putting a romantic gloss on a piece of dubious economy. Whatever the case, standard cabling is where any Stationeer\'s network begins. \nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable Coil".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2060134443i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCableCoilHeavy".into(), + prefab_hash: 2060134443i32, + desc: "Use heavy cable coil for power systems with large draws. Unlike , which can only safely conduct 5kW, heavy cables can transmit up to 100kW." + .into(), + name: "Cable Coil (Heavy)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 195442047i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCableFuse".into(), + prefab_hash: 195442047i32, + desc: "".into(), + name: "Kit (Cable Fuses)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2104175091i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedCondensedMilk".into(), + prefab_hash: -2104175091i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Condensed Milk and an Empty Can, canned condensed milk is fairly high in nutrition, and does not decay." + .into(), + name: "Canned Condensed Milk".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -999714082i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedEdamame".into(), + prefab_hash: -999714082i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Soybean and an Empty Can, canned edamame beans are fairly high in nutrition, and do not decay." + .into(), + name: "Canned Edamame".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1344601965i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedMushroom".into(), + prefab_hash: -1344601965i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Mushroom and a Empty Can, delicious mushroom soup is fairly high in nutrition, and does not decay." + .into(), + name: "Canned Mushroom".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1161510063i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedPowderedEggs".into(), + prefab_hash: 1161510063i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Powdered Eggs and an Empty Can, canned powdered eggs are an exciting, dynamic food that\'s fairly high in nutrition, and does not decay." + .into(), + name: "Canned Powdered Eggs".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1185552595i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedRicePudding".into(), + prefab_hash: -1185552595i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Rice and an Empty Can, canned rice pudding is a sweet treat, fairly high in nutrition, and does not decay." + .into(), + name: "Canned Rice Pudding".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 791746840i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCerealBar".into(), + prefab_hash: 791746840i32, + desc: "Sustains, without decay. If only all our relationships were so well balanced." + .into(), + name: "Cereal Bar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 252561409i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCharcoal".into(), + prefab_hash: 252561409i32, + desc: "Charcoal is a lightweight, black carbon residue produced by heating Biomass in a Arc Furnace. It contains less energy potential than Ore (Coal), but can be used as a basic fuel source. Charcoal can also be substituted for coal in alloy recipes." + .into(), + name: "Charcoal".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 200u32, + reagents: Some(vec![("Carbon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -772542081i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightBlue".into(), + prefab_hash: -772542081i32, + desc: "A safe and slightly rave-some source of blue light. Snap to activate." + .into(), + name: "Chem Light (Blue)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -597479390i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightGreen".into(), + prefab_hash: -597479390i32, + desc: "Enliven the dreariest, airless rock with this glowy green light. Snap to activate." + .into(), + name: "Chem Light (Green)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -525810132i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightRed".into(), + prefab_hash: -525810132i32, + desc: "A red glowstick. Snap to activate. Then reach for the lasers." + .into(), + name: "Chem Light (Red)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1312166823i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightWhite".into(), + prefab_hash: 1312166823i32, + desc: "Snap the glowstick to activate a pale radiance that keeps the darkness at bay." + .into(), + name: "Chem Light (White)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1224819963i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightYellow".into(), + prefab_hash: 1224819963i32, + desc: "Dispel the darkness with this yellow glowstick.".into(), + name: "Chem Light (Yellow)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 234601764i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChocolateBar".into(), + prefab_hash: 234601764i32, + desc: "".into(), + name: "Chocolate Bar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -261575861i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChocolateCake".into(), + prefab_hash: -261575861i32, + desc: "".into(), + name: "Chocolate Cake".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 860793245i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChocolateCerealBar".into(), + prefab_hash: 860793245i32, + desc: "".into(), + name: "Chocolate Cereal Bar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1724793494i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCoalOre".into(), + prefab_hash: 1724793494i32, + desc: "Humanity wouldn\'t have got to space without humble, combustible coal. Burn it in a , smelt it in the Furnace to create alloys, or use it in the Reagent Processor to make Spray Paint (Black)." + .into(), + name: "Ore (Coal)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Hydrocarbon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -983091249i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCobaltOre".into(), + prefab_hash: -983091249i32, + desc: "Cobalt is a chemical element with the symbol \"Co\" and is typically found in only small deposits. Cobalt is a rare substance, but used create the Heal Pill and several alloys." + .into(), + name: "Ore (Cobalt)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Cobalt".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 457286516i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCocoaPowder".into(), + prefab_hash: 457286516i32, + desc: "".into(), + name: "Cocoa Powder".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Cocoa".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 680051921i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCocoaTree".into(), + prefab_hash: 680051921i32, + desc: "".into(), + name: "Cocoa".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Cocoa".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1800622698i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCoffeeMug".into(), + prefab_hash: 1800622698i32, + desc: "".into(), + name: "Coffee Mug".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1058547521i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemConstantanIngot".into(), + prefab_hash: 1058547521i32, + desc: "".into(), + name: "Ingot (Constantan)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Constantan".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1715917521i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedCondensedMilk".into(), + prefab_hash: 1715917521i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Condensed Milk".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Milk".into(), 100f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1344773148i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedCorn".into(), + prefab_hash: 1344773148i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Corn".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Corn".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1076892658i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedMushroom".into(), + prefab_hash: -1076892658i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Mushroom".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Mushroom".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1712264413i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedPowderedEggs".into(), + prefab_hash: -1712264413i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Powdered Eggs".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Egg".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1849281546i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedPumpkin".into(), + prefab_hash: 1849281546i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Pumpkin".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Pumpkin".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2013539020i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedRice".into(), + prefab_hash: 2013539020i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Rice".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Rice".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1353449022i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedSoybean".into(), + prefab_hash: 1353449022i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Soybean".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Soy".into(), 5f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -709086714i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedTomato".into(), + prefab_hash: -709086714i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Tomato".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Tomato".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -404336834i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCopperIngot".into(), + prefab_hash: -404336834i32, + desc: "Copper ingots are created by smelting Ore (Copper) in the Furnace and Arc Furnace, and used to create a variety of items." + .into(), + name: "Ingot (Copper)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Copper".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -707307845i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCopperOre".into(), + prefab_hash: -707307845i32, + desc: "Copper is a chemical element with the symbol \"Cu\". This common and highly conductive material is found on most astronomical bodies and is used in a variety of manufacturing processes including electronic components, alloys, and wires." + .into(), + name: "Ore (Copper)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Copper".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 258339687i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCorn".into(), + prefab_hash: 258339687i32, + desc: "A long growth time staple crop. Its low requirement for darkness allows for accelerated growing if provided with extra light." + .into(), + name: "Corn".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Corn".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 545034114i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCornSoup".into(), + prefab_hash: 545034114i32, + desc: "Made using Cooked Corn and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Faily high in nutrition, canned food does not decay." + .into(), + name: "Corn Soup".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1756772618i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCreditCard".into(), + prefab_hash: -1756772618i32, + desc: "".into(), + name: "Credit Card".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100000u32, + reagents: None, + slot_class: Class::CreditCard, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 215486157i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCropHay".into(), + prefab_hash: 215486157i32, + desc: "".into(), + name: "Hay".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 856108234i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCrowbar".into(), + prefab_hash: 856108234i32, + desc: "Recurso\'s entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise." + .into(), + name: "Crowbar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1005843700i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDataDisk".into(), + prefab_hash: 1005843700i32, + desc: "".into(), + name: "Data Disk".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::DataDisk, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 902565329i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDirtCanister".into(), + prefab_hash: 902565329i32, + desc: "A container the will fill with Dirt when using a Mining Drill when placed inside a Mining Belt. You can then use this Dirt Canister with the Terrain Manipulator to adjust the terrain to suit your needs." + .into(), + name: "Dirt Canister".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1234745580i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDirtyOre".into(), + prefab_hash: -1234745580i32, + desc: "Ore mined from bedrock via the Deep Miner which then can be used in the Centrifuge, or Combustion Centrifuge. Once processed, it produces ore in a ratio similar to the average found on the planet\'s surface. " + .into(), + name: "Dirty Ore".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2124435700i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDisposableBatteryCharger".into(), + prefab_hash: -2124435700i32, + desc: "Consumable battery the recharges your suit battery. If used on a HEM-Droid it will recharge the HEM-Droids internal battery." + .into(), + name: "Disposable Battery Charger".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2009673399i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDrill".into(), + prefab_hash: 2009673399i32, + desc: "The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature." + .into(), + name: "Hand Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1943134693i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDuctTape".into(), + prefab_hash: -1943134693i32, + desc: "In the distant past, one of Earth\'s great champions taught a generation of \'Fix-It People\' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage." + .into(), + name: "Duct Tape".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1072914031i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDynamicAirCon".into(), + prefab_hash: 1072914031i32, + desc: "".into(), + name: "Kit (Portable Air Conditioner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -971920158i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDynamicScrubber".into(), + prefab_hash: -971920158i32, + desc: "".into(), + name: "Kit (Portable Scrubber)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -524289310i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEggCarton".into(), + prefab_hash: -524289310i32, + desc: "Within, eggs reside in mysterious, marmoreal silence.".into(), + name: "Egg Carton".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Storage, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::Egg }, SlotInfo { name : "" + .into(), typ : Class::Egg }, SlotInfo { name : "".into(), typ : + Class::Egg }, SlotInfo { name : "".into(), typ : Class::Egg }, SlotInfo { + name : "".into(), typ : Class::Egg }, SlotInfo { name : "".into(), typ : + Class::Egg } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 731250882i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemElectronicParts".into(), + prefab_hash: 731250882i32, + desc: "".into(), + name: "Electronic Parts".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 502280180i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemElectrumIngot".into(), + prefab_hash: 502280180i32, + desc: "".into(), + name: "Ingot (Electrum)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Electrum".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -351438780i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyAngleGrinder".into(), + prefab_hash: -351438780i32, + desc: "".into(), + name: "Emergency Angle Grinder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1056029600i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyArcWelder".into(), + prefab_hash: -1056029600i32, + desc: "".into(), + name: "Emergency Arc Welder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 976699731i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyCrowbar".into(), + prefab_hash: 976699731i32, + desc: "".into(), + name: "Emergency Crowbar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2052458905i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyDrill".into(), + prefab_hash: -2052458905i32, + desc: "".into(), + name: "Emergency Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1791306431i32, + ItemSuitTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyEvaSuit".into(), + prefab_hash: 1791306431i32, + desc: "".into(), + name: "Emergency Eva Suit".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Suit, + sorting_class: SortingClass::Clothing, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.2f32, + radiation_factor: 0.2f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }), + slots: vec![ + SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, SlotInfo + { name : "Waste Tank".into(), typ : Class::GasCanister }, SlotInfo { name + : "Life Support".into(), typ : Class::Battery }, SlotInfo { name : + "Filter".into(), typ : Class::GasFilter }, SlotInfo { name : "Filter" + .into(), typ : Class::GasFilter }, SlotInfo { name : "Filter".into(), typ + : Class::GasFilter } + ] + .into_iter() + .collect(), + suit_info: SuitInfo { + hygine_reduction_multiplier: 1f32, + waste_max_pressure: 4053f32, + }, + } + .into(), + ); + map.insert( + -1061510408i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyPickaxe".into(), + prefab_hash: -1061510408i32, + desc: "".into(), + name: "Emergency Pickaxe".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 266099983i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyScrewdriver".into(), + prefab_hash: 266099983i32, + desc: "".into(), + name: "Emergency Screwdriver".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 205916793i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencySpaceHelmet".into(), + prefab_hash: 205916793i32, + desc: "".into(), + name: "Emergency Space Helmet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 3f32 }), + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), (LogicType::Flush, + MemoryAccess::Write), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + 1661941301i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyToolBelt".into(), + prefab_hash: 1661941301i32, + desc: "".into(), + name: "Emergency Tool Belt".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ + : Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ + : Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 2102803952i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyWireCutters".into(), + prefab_hash: 2102803952i32, + desc: "".into(), + name: "Emergency Wire Cutters".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 162553030i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyWrench".into(), + prefab_hash: 162553030i32, + desc: "".into(), + name: "Emergency Wrench".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1013818348i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmptyCan".into(), + prefab_hash: 1013818348i32, + desc: "Used for making soups when combined with food in the Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay." + .into(), + name: "Empty Can".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Steel".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1677018918i32, + ItemSuitTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEvaSuit".into(), + prefab_hash: 1677018918i32, + desc: "The EVA suit is the basic suit Stationeers need to survive in the inhospitable environment of space. For more information on EVA suits, consult the EVA suit guide." + .into(), + name: "Eva Suit".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Suit, + sorting_class: SortingClass::Clothing, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.2f32, + radiation_factor: 0.2f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }), + slots: vec![ + SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, SlotInfo + { name : "Waste Tank".into(), typ : Class::GasCanister }, SlotInfo { name + : "Life Support".into(), typ : Class::Battery }, SlotInfo { name : + "Filter".into(), typ : Class::GasFilter }, SlotInfo { name : "Filter" + .into(), typ : Class::GasFilter }, SlotInfo { name : "Filter".into(), typ + : Class::GasFilter } + ] + .into_iter() + .collect(), + suit_info: SuitInfo { + hygine_reduction_multiplier: 1f32, + waste_max_pressure: 4053f32, + }, + } + .into(), + ); + map.insert( + 235361649i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemExplosive".into(), + prefab_hash: 235361649i32, + desc: "".into(), + name: "Remote Explosive".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 892110467i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFern".into(), + prefab_hash: 892110467i32, + desc: "There was a time, when Stationeers had to make Fenoxitone Powder using the Reagent Processor. Recent advances in technology allow you to use equivalent quantities of fern directly in recipes." + .into(), + name: "Fern".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Fenoxitone".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -383972371i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFertilizedEgg".into(), + prefab_hash: -383972371i32, + desc: "To hatch it requires an incubation temperature of between 35 and 45 degrees Celsius and will hatch into a Chick. If the egg is exposed to tepratures below 10 degrees it will no longer be viable." + .into(), + name: "Egg".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 1u32, + reagents: Some(vec![("Egg".into(), 1f64)].into_iter().collect()), + slot_class: Class::Egg, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 266654416i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFilterFern".into(), + prefab_hash: 266654416i32, + desc: "A fern adapted by Agrizeroto process a much greater volume of Carbon Dioxide into Oxygen than an average plant." + .into(), + name: "Darga Fern".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2011191088i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlagSmall".into(), + prefab_hash: 2011191088i32, + desc: "".into(), + name: "Kit (Small Flag)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2107840748i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlashingLight".into(), + prefab_hash: -2107840748i32, + desc: "".into(), + name: "Kit (Flashing Light)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -838472102i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlashlight".into(), + prefab_hash: -838472102i32, + desc: "A flashlight with a narrow and wide beam options.".into(), + name: "Flashlight".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Low Power".into()), (1u32, "High Power".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -665995854i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlour".into(), + prefab_hash: -665995854i32, + desc: "Pulverized Wheat, a key ingredient in many foods created by the Microwave and the Kit (Automated Oven)." + .into(), + name: "Flour".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Flour".into(), 50f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1573623434i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerBlue".into(), + prefab_hash: -1573623434i32, + desc: "".into(), + name: "Flower (Blue)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1513337058i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerGreen".into(), + prefab_hash: -1513337058i32, + desc: "".into(), + name: "Flower (Green)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1411986716i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerOrange".into(), + prefab_hash: -1411986716i32, + desc: "".into(), + name: "Flower (Orange)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -81376085i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerRed".into(), + prefab_hash: -81376085i32, + desc: "".into(), + name: "Flower (Red)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1712822019i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerYellow".into(), + prefab_hash: 1712822019i32, + desc: "".into(), + name: "Flower (Yellow)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -57608687i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFrenchFries".into(), + prefab_hash: -57608687i32, + desc: "Because space would suck without \'em.".into(), + name: "Canned French Fries".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1371786091i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFries".into(), + prefab_hash: 1371786091i32, + desc: "".into(), + name: "French Fries".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -767685874i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterCarbonDioxide".into(), + prefab_hash: -767685874i32, + desc: "".into(), + name: "Canister (CO2)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), + } + .into(), + ); + map.insert( + 42280099i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterEmpty".into(), + prefab_hash: 42280099i32, + desc: "".into(), + name: "Canister".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), + } + .into(), + ); + map.insert( + -1014695176i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterFuel".into(), + prefab_hash: -1014695176i32, + desc: "".into(), + name: "Canister (Fuel)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), + } + .into(), + ); + map.insert( + 2145068424i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterNitrogen".into(), + prefab_hash: 2145068424i32, + desc: "".into(), + name: "Canister (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), + } + .into(), + ); + map.insert( + -1712153401i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterNitrousOxide".into(), + prefab_hash: -1712153401i32, + desc: "".into(), + name: "Gas Canister (Sleeping)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), + } + .into(), + ); + map.insert( + -1152261938i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterOxygen".into(), + prefab_hash: -1152261938i32, + desc: "".into(), + name: "Canister (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), + } + .into(), + ); + map.insert( + -1552586384i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterPollutants".into(), + prefab_hash: -1552586384i32, + desc: "".into(), + name: "Canister (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), + } + .into(), + ); + map.insert( + -668314371i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterSmart".into(), + prefab_hash: -668314371i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Gas Canister (Smart)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), + } + .into(), + ); + map.insert( + -472094806i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterVolatiles".into(), + prefab_hash: -472094806i32, + desc: "".into(), + name: "Canister (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }), + } + .into(), + ); + map.insert( + -1854861891i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterWater".into(), + prefab_hash: -1854861891i32, + desc: "".into(), + name: "Liquid Canister (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::LiquidCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { + volume: 12.1f32, + }), + } + .into(), + ); + map.insert( + 1635000764i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterCarbonDioxide".into(), + prefab_hash: 1635000764i32, + desc: "Given humanity\'s obsession with exhaling Carbon Dioxide, all Stationeers are issued two basic Sinotai Carbon Dioxide Gas Filter as part of their standard deployment kit (SDK). These filters allow passage of Carbon Dioxide into the suit\'s waste Canister, but are also critical components of the Portable Air Scrubber and the Filtration. The Medium Filter (Carbon Dioxide) and Heavy Filter (Carbon Dioxide) are also available." + .into(), + name: "Filter (Carbon Dioxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::CarbonDioxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -185568964i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterCarbonDioxideInfinite".into(), + prefab_hash: -185568964i32, + desc: "A filter that selectively targets Carbon Dioxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Carbon Dioxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::CarbonDioxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1876847024i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterCarbonDioxideL".into(), + prefab_hash: 1876847024i32, + desc: "".into(), + name: "Heavy Filter (Carbon Dioxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::CarbonDioxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 416897318i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterCarbonDioxideM".into(), + prefab_hash: 416897318i32, + desc: "".into(), + name: "Medium Filter (Carbon Dioxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::CarbonDioxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 632853248i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrogen".into(), + prefab_hash: 632853248i32, + desc: "Filters are used to capture various gases, which can be disposed of or used elsewhere. Nitrogen is a byproduct of smelting various ores, notably Ice (Nitrice), which may be combined with Oxygen to make a breathable - and considerably less flammable - atmosphere." + .into(), + name: "Filter (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Nitrogen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 152751131i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrogenInfinite".into(), + prefab_hash: 152751131i32, + desc: "A filter that selectively targets Nitrogen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Nitrogen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1387439451i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrogenL".into(), + prefab_hash: -1387439451i32, + desc: "".into(), + name: "Heavy Filter (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Nitrogen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -632657357i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrogenM".into(), + prefab_hash: -632657357i32, + desc: "".into(), + name: "Medium Filter (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Nitrogen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1247674305i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrousOxide".into(), + prefab_hash: -1247674305i32, + desc: "".into(), + name: "Filter (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::NitrousOxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -123934842i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrousOxideInfinite".into(), + prefab_hash: -123934842i32, + desc: "A filter that selectively targets Nitrous Oxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::NitrousOxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 465267979i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrousOxideL".into(), + prefab_hash: 465267979i32, + desc: "".into(), + name: "Heavy Filter (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::NitrousOxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1824284061i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrousOxideM".into(), + prefab_hash: 1824284061i32, + desc: "".into(), + name: "Medium Filter (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::NitrousOxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -721824748i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterOxygen".into(), + prefab_hash: -721824748i32, + desc: "Sinotai have cornered the market in filter design. Their trademarked templates are simple to print and highly efficient at capturing various gases, which can be disposed of or used elsewhere. Oxygen is a common byproduct of smelting various ores, but must be filtered of such impurities as Nitrogen using this filter and various devices, such as the Kit (Portable Scrubber)." + .into(), + name: "Filter (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Oxygen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1055451111i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterOxygenInfinite".into(), + prefab_hash: -1055451111i32, + desc: "A filter that selectively targets Oxygen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Oxygen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1217998945i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterOxygenL".into(), + prefab_hash: -1217998945i32, + desc: "".into(), + name: "Heavy Filter (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Oxygen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1067319543i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterOxygenM".into(), + prefab_hash: -1067319543i32, + desc: "".into(), + name: "Medium Filter (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Oxygen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1915566057i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterPollutants".into(), + prefab_hash: 1915566057i32, + desc: "Filters are used to capture various gases, such as waste emissions from a Furnace or Arc Furnace. Adding Sinotai-designed Pollutant filters to a Kit (Portable Scrubber) allows you to isolate this gas, then add it to a pipe network and employ its excellent coolant properties in a Wall Cooler. Try not to inhale." + .into(), + name: "Filter (Pollutant)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Pollutant), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -503738105i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterPollutantsInfinite".into(), + prefab_hash: -503738105i32, + desc: "A filter that selectively targets Pollutants. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Pollutant), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1959564765i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterPollutantsL".into(), + prefab_hash: 1959564765i32, + desc: "".into(), + name: "Heavy Filter (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Pollutant), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 63677771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterPollutantsM".into(), + prefab_hash: 63677771i32, + desc: "".into(), + name: "Medium Filter (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Pollutant), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 15011598i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterVolatiles".into(), + prefab_hash: 15011598i32, + desc: "Filters are used to capture various gases, which can be disposed of or used elsewhere. Volatiles are created by exposing Ice (Volatiles) to heat. The product can then be collected and combined with Oxygen to create fuel, or used within a Furnace to smelt ores and create alloys." + .into(), + name: "Filter (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Volatiles), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1916176068i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterVolatilesInfinite".into(), + prefab_hash: -1916176068i32, + desc: "A filter that selectively targets Volatiles. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Volatiles), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1255156286i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterVolatilesL".into(), + prefab_hash: 1255156286i32, + desc: "".into(), + name: "Heavy Filter (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Volatiles), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1037507240i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterVolatilesM".into(), + prefab_hash: 1037507240i32, + desc: "".into(), + name: "Medium Filter (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Volatiles), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1993197973i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterWater".into(), + prefab_hash: -1993197973i32, + desc: "Sinotai filters are used to capture various gases, which can be disposed of, or used elsewhere. Water can be collected by filtering smelted Ice (Water)" + .into(), + name: "Filter (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Steam), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1678456554i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterWaterInfinite".into(), + prefab_hash: -1678456554i32, + desc: "A filter that selectively targets Water. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Steam), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2004969680i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterWaterL".into(), + prefab_hash: 2004969680i32, + desc: "".into(), + name: "Heavy Filter (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Steam), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 8804422i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterWaterM".into(), + prefab_hash: 8804422i32, + desc: "".into(), + name: "Medium Filter (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Steam), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1717593480i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasSensor".into(), + prefab_hash: 1717593480i32, + desc: "".into(), + name: "Kit (Gas Sensor)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2113012215i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasTankStorage".into(), + prefab_hash: -2113012215i32, + desc: "This kit produces a Kit (Canister Storage) for refilling a Canister." + .into(), + name: "Kit (Canister Storage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1588896491i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGlassSheets".into(), + prefab_hash: 1588896491i32, + desc: "A fundamental construction component, glass sheets are created from Silicon. Fabricated on the Autolathe, they are used to make {THING:StructureSolarPanel;Solar Panels}, and many other structures." + .into(), + name: "Glass Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1068925231i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGlasses".into(), + prefab_hash: -1068925231i32, + desc: "".into(), + name: "Glasses".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Glasses, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 226410516i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGoldIngot".into(), + prefab_hash: 226410516i32, + desc: "There is an enduring paradox at the heart of the Stationeers project: An initiative conceived as \'cut-price space exploration\' uses Gold as a fundamental ingredient in fabricating so much of its equipment and materiel. " + .into(), + name: "Ingot (Gold)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Gold".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1348105509i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGoldOre".into(), + prefab_hash: -1348105509i32, + desc: "Surprisingly common throughout the Solar System, Gold is thought to originate in the heart of supernovas, gathering as dust in the early stages of solar formation, then incorporating into the slowly accreting planetary bodies. Now a prized element in Stationeer construction, Gold is valued not for its beauty, but its reliability: inert, durable, conductive and highly stable, gold\'s strength is that it does nothing." + .into(), + name: "Ore (Gold)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Gold".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1544275894i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGrenade".into(), + prefab_hash: 1544275894i32, + desc: "Invented by the Romans, who threw Greek Fire at their enemies in ceramic jars, the word \'grenade\' is derived from the Old French word for \'pomegranate\', as many modern grenades resemble this round, many-seeded fruit. Also like many grenades before it, this one goes boom and breaks stuff." + .into(), + name: "Hand Grenade".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 470636008i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHEMDroidRepairKit".into(), + prefab_hash: 470636008i32, + desc: "Repairs damaged HEM-Droids to full health.".into(), + name: "HEMDroid Repair Kit".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 374891127i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardBackpack".into(), + prefab_hash: 374891127i32, + desc: "This backpack can be useful when you are working inside and don\'t need to fly around." + .into(), + name: "Hardsuit Backpack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (3u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (4u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (5u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (6u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (7u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (8u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (9u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (10u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (11u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -412551656i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardJetpack".into(), + prefab_hash: -412551656i32, + desc: "The Norsec jetpack isn\'t \'technically\' a jetpack at all, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nThe hardsuit jetpack is capable of much higher speeds than the Jetpack Basic - up to 15m/s. Indispensable for building, mining and general movement, it has fourteen storage slots.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move." + .into(), + name: "Hardsuit Jetpack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (3u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (4u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (5u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (6u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (7u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (8u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (9u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (10u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (11u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (12u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (13u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (14u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Propellant".into(), typ : Class::GasCanister }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 900366130i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardMiningBackPack".into(), + prefab_hash: 900366130i32, + desc: "".into(), + name: "Hard Mining Backpack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1758310454i32, + ItemSuitCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardSuit".into(), + prefab_hash: -1758310454i32, + desc: "Connects to Logic Transmitter" + .into(), + name: "Hardsuit".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Suit, + sorting_class: SortingClass::Clothing, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }), + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (4u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::PressureExternal, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite), + (LogicType::PressureSetting, MemoryAccess::ReadWrite), + (LogicType::TemperatureSetting, MemoryAccess::ReadWrite), + (LogicType::TemperatureExternal, MemoryAccess::Read), + (LogicType::Filtration, MemoryAccess::ReadWrite), + (LogicType::AirRelease, MemoryAccess::ReadWrite), + (LogicType::PositionX, MemoryAccess::Read), (LogicType::PositionY, + MemoryAccess::Read), (LogicType::PositionZ, MemoryAccess::Read), + (LogicType::VelocityMagnitude, MemoryAccess::Read), + (LogicType::VelocityRelativeX, MemoryAccess::Read), + (LogicType::VelocityRelativeY, MemoryAccess::Read), + (LogicType::VelocityRelativeZ, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::ForwardX, + MemoryAccess::Read), (LogicType::ForwardY, MemoryAccess::Read), + (LogicType::ForwardZ, MemoryAccess::Read), (LogicType::Orientation, + MemoryAccess::Read), (LogicType::VelocityX, MemoryAccess::Read), + (LogicType::VelocityY, MemoryAccess::Read), (LogicType::VelocityZ, + MemoryAccess::Read), (LogicType::EntityState, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: true, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, SlotInfo + { name : "Waste Tank".into(), typ : Class::GasCanister }, SlotInfo { name + : "Life Support".into(), typ : Class::Battery }, SlotInfo { name : + "Programmable Chip".into(), typ : Class::ProgrammableChip }, SlotInfo { + name : "Filter".into(), typ : Class::GasFilter }, SlotInfo { name : + "Filter".into(), typ : Class::GasFilter }, SlotInfo { name : "Filter" + .into(), typ : Class::GasFilter }, SlotInfo { name : "Filter".into(), typ + : Class::GasFilter } + ] + .into_iter() + .collect(), + suit_info: SuitInfo { + hygine_reduction_multiplier: 1.5f32, + waste_max_pressure: 4053f32, + }, + memory: MemoryInfo { + instructions: None, + memory_access: MemoryAccess::ReadWrite, + memory_size: 0u32, + }, + } + .into(), + ); + map.insert( + -84573099i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardsuitHelmet".into(), + prefab_hash: -84573099i32, + desc: "The Hardsuit Helmet is similar to the Space Helmet, but can withstand higher temperatures and pressures. It\'s perfect for enduring harsh environments like Venus and Vulcan." + .into(), + name: "Hardsuit Helmet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 3f32 }), + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), (LogicType::Flush, + MemoryAccess::Write), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + 1579842814i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHastelloyIngot".into(), + prefab_hash: 1579842814i32, + desc: "".into(), + name: "Ingot (Hastelloy)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Hastelloy".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 299189339i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHat".into(), + prefab_hash: 299189339i32, + desc: "As the name suggests, this is a hat.".into(), + name: "Hat".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 998653377i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHighVolumeGasCanisterEmpty".into(), + prefab_hash: 998653377i32, + desc: "".into(), + name: "High Volume Gas Canister".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 83f32 }), + } + .into(), + ); + map.insert( + -1117581553i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHorticultureBelt".into(), + prefab_hash: -1117581553i32, + desc: "".into(), + name: "Horticulture Belt".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Plant".into(), typ + : Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant }, + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), + typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ : + Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant }, + SlotInfo { name : "Plant".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1193543727i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHydroponicTray".into(), + prefab_hash: -1193543727i32, + desc: "This kits creates a Hydroponics Tray for growing various plants." + .into(), + name: "Kit (Hydroponic Tray)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1217489948i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIce".into(), + prefab_hash: 1217489948i32, + desc: "Water ice can be found on most planets in the Solar System, though not all worlds visited by Stationeers possess this resource. Highly sensitive to temperature, ice will begin to melt as soon as it is mined, unless kept in the Mining Belt. When melting, ice produces a mixture of Steam and Nitrogen gas." + .into(), + name: "Ice (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 890106742i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIgniter".into(), + prefab_hash: 890106742i32, + desc: "This kit creates an Kit (Igniter) unit." + .into(), + name: "Kit (Igniter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -787796599i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemInconelIngot".into(), + prefab_hash: -787796599i32, + desc: "".into(), + name: "Ingot (Inconel)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Inconel".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 897176943i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemInsulation".into(), + prefab_hash: 897176943i32, + desc: "Mysterious in the extreme, the function of this item is lost to the ages." + .into(), + name: "Insulation".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -744098481i32, + ItemLogicMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIntegratedCircuit10".into(), + prefab_hash: -744098481i32, + desc: "".into(), + name: "Integrated Circuit (IC10)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::ProgrammableChip, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::LineNumber, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + memory: MemoryInfo { + instructions: None, + memory_access: MemoryAccess::ReadWrite, + memory_size: 512u32, + }, + } + .into(), + ); + map.insert( + -297990285i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemInvarIngot".into(), + prefab_hash: -297990285i32, + desc: "".into(), + name: "Ingot (Invar)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Invar".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1225836666i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIronFrames".into(), + prefab_hash: 1225836666i32, + desc: "".into(), + name: "Iron Frames".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1301215609i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIronIngot".into(), + prefab_hash: -1301215609i32, + desc: "The most basic unit of construction available to Stationeer-kind, iron ingots are created by smelting Ore (Iron) in the Furnace and Arc Furnace, and used to create a variety of items." + .into(), + name: "Ingot (Iron)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Iron".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1758427767i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIronOre".into(), + prefab_hash: 1758427767i32, + desc: "Abundant throughout the Solar System, iron is the ore most commonly used by Stationeers constructing offworld bases. It can be smelted into both Ingot (Iron)s and Ingot (Steel)s." + .into(), + name: "Ore (Iron)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Iron".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -487378546i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIronSheets".into(), + prefab_hash: -487378546i32, + desc: "".into(), + name: "Iron Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1969189000i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemJetpackBasic".into(), + prefab_hash: 1969189000i32, + desc: "The basic CHAC jetpack isn\'t \'technically\' a jetpack, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stabilizer causes the spacepack to hover when a given height is reached.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move." + .into(), + name: "Jetpack Basic".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (3u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (4u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (5u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (6u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (7u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (8u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (9u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Propellant".into(), typ : Class::GasCanister }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 496830914i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAIMeE".into(), + prefab_hash: 496830914i32, + desc: "".into(), + name: "Kit (AIMeE)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 513258369i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAccessBridge".into(), + prefab_hash: 513258369i32, + desc: "".into(), + name: "Kit (Access Bridge)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1431998347i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAdvancedComposter".into(), + prefab_hash: -1431998347i32, + desc: "".into(), + name: "Kit (Advanced Composter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -616758353i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAdvancedFurnace".into(), + prefab_hash: -616758353i32, + desc: "".into(), + name: "Kit (Advanced Furnace)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -598545233i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAdvancedPackagingMachine".into(), + prefab_hash: -598545233i32, + desc: "".into(), + name: "Kit (Advanced Packaging Machine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 964043875i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAirlock".into(), + prefab_hash: 964043875i32, + desc: "".into(), + name: "Kit (Airlock)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 682546947i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAirlockGate".into(), + prefab_hash: 682546947i32, + desc: "".into(), + name: "Kit (Hangar Door)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -98995857i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitArcFurnace".into(), + prefab_hash: -98995857i32, + desc: "".into(), + name: "Kit (Arc Furnace)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1222286371i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAtmospherics".into(), + prefab_hash: 1222286371i32, + desc: "".into(), + name: "Kit (Atmospherics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1668815415i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAutoMinerSmall".into(), + prefab_hash: 1668815415i32, + desc: "".into(), + name: "Kit (Autominer Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1753893214i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAutolathe".into(), + prefab_hash: -1753893214i32, + desc: "".into(), + name: "Kit (Autolathe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1931958659i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAutomatedOven".into(), + prefab_hash: -1931958659i32, + desc: "".into(), + name: "Kit (Automated Oven)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 148305004i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBasket".into(), + prefab_hash: 148305004i32, + desc: "".into(), + name: "Kit (Basket)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1406656973i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBattery".into(), + prefab_hash: 1406656973i32, + desc: "".into(), + name: "Kit (Battery)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -21225041i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBatteryLarge".into(), + prefab_hash: -21225041i32, + desc: "".into(), + name: "Kit (Battery Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 249073136i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBeacon".into(), + prefab_hash: 249073136i32, + desc: "".into(), + name: "Kit (Beacon)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1241256797i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBeds".into(), + prefab_hash: -1241256797i32, + desc: "".into(), + name: "Kit (Beds)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1755116240i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBlastDoor".into(), + prefab_hash: -1755116240i32, + desc: "".into(), + name: "Kit (Blast Door)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 578182956i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCentrifuge".into(), + prefab_hash: 578182956i32, + desc: "".into(), + name: "Kit (Centrifuge)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1394008073i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitChairs".into(), + prefab_hash: -1394008073i32, + desc: "".into(), + name: "Kit (Chairs)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1025254665i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitChute".into(), + prefab_hash: 1025254665i32, + desc: "".into(), + name: "Kit (Basic Chutes)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -876560854i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitChuteUmbilical".into(), + prefab_hash: -876560854i32, + desc: "".into(), + name: "Kit (Chute Umbilical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1470820996i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCompositeCladding".into(), + prefab_hash: -1470820996i32, + desc: "".into(), + name: "Kit (Cladding)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1182412869i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCompositeFloorGrating".into(), + prefab_hash: 1182412869i32, + desc: "".into(), + name: "Kit (Floor Grating)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1990225489i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitComputer".into(), + prefab_hash: 1990225489i32, + desc: "".into(), + name: "Kit (Computer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1241851179i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitConsole".into(), + prefab_hash: -1241851179i32, + desc: "".into(), + name: "Kit (Consoles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 429365598i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCrate".into(), + prefab_hash: 429365598i32, + desc: "".into(), + name: "Kit (Crate)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1585956426i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCrateMkII".into(), + prefab_hash: -1585956426i32, + desc: "".into(), + name: "Kit (Crate Mk II)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -551612946i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCrateMount".into(), + prefab_hash: -551612946i32, + desc: "".into(), + name: "Kit (Container Mount)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -545234195i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCryoTube".into(), + prefab_hash: -545234195i32, + desc: "".into(), + name: "Kit (Cryo Tube)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1935075707i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDeepMiner".into(), + prefab_hash: -1935075707i32, + desc: "".into(), + name: "Kit (Deep Miner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 77421200i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDockingPort".into(), + prefab_hash: 77421200i32, + desc: "".into(), + name: "Kit (Docking Port)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 168615924i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDoor".into(), + prefab_hash: 168615924i32, + desc: "".into(), + name: "Kit (Door)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1743663875i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDrinkingFountain".into(), + prefab_hash: -1743663875i32, + desc: "".into(), + name: "Kit (Drinking Fountain)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1061945368i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicCanister".into(), + prefab_hash: -1061945368i32, + desc: "".into(), + name: "Kit (Portable Gas Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1533501495i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicGasTankAdvanced".into(), + prefab_hash: 1533501495i32, + desc: "".into(), + name: "Kit (Portable Gas Tank Mk II)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -732720413i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicGenerator".into(), + prefab_hash: -732720413i32, + desc: "".into(), + name: "Kit (Portable Generator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1861154222i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicHydroponics".into(), + prefab_hash: -1861154222i32, + desc: "".into(), + name: "Kit (Portable Hydroponics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 375541286i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicLiquidCanister".into(), + prefab_hash: 375541286i32, + desc: "".into(), + name: "Kit (Portable Liquid Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -638019974i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicMKIILiquidCanister".into(), + prefab_hash: -638019974i32, + desc: "".into(), + name: "Kit (Portable Liquid Tank Mk II)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1603046970i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitElectricUmbilical".into(), + prefab_hash: 1603046970i32, + desc: "".into(), + name: "Kit (Power Umbilical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1181922382i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitElectronicsPrinter".into(), + prefab_hash: -1181922382i32, + desc: "".into(), + name: "Kit (Electronics Printer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -945806652i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitElevator".into(), + prefab_hash: -945806652i32, + desc: "".into(), + name: "Kit (Elevator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 755302726i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitEngineLarge".into(), + prefab_hash: 755302726i32, + desc: "".into(), + name: "Kit (Engine Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1969312177i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitEngineMedium".into(), + prefab_hash: 1969312177i32, + desc: "".into(), + name: "Kit (Engine Medium)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 19645163i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitEngineSmall".into(), + prefab_hash: 19645163i32, + desc: "".into(), + name: "Kit (Engine Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1587787610i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitEvaporationChamber".into(), + prefab_hash: 1587787610i32, + desc: "".into(), + name: "Kit (Phase Change Device)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1701764190i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFlagODA".into(), + prefab_hash: 1701764190i32, + desc: "".into(), + name: "Kit (ODA Flag)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1168199498i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFridgeBig".into(), + prefab_hash: -1168199498i32, + desc: "".into(), + name: "Kit (Fridge Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1661226524i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFridgeSmall".into(), + prefab_hash: 1661226524i32, + desc: "".into(), + name: "Kit (Fridge Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -806743925i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFurnace".into(), + prefab_hash: -806743925i32, + desc: "".into(), + name: "Kit (Furnace)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1162905029i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFurniture".into(), + prefab_hash: 1162905029i32, + desc: "".into(), + name: "Kit (Furniture)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -366262681i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFuselage".into(), + prefab_hash: -366262681i32, + desc: "".into(), + name: "Kit (Fuselage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 377745425i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGasGenerator".into(), + prefab_hash: 377745425i32, + desc: "".into(), + name: "Kit (Gas Fuel Generator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1867280568i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGasUmbilical".into(), + prefab_hash: -1867280568i32, + desc: "".into(), + name: "Kit (Gas Umbilical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 206848766i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGovernedGasRocketEngine".into(), + prefab_hash: 206848766i32, + desc: "".into(), + name: "Kit (Pumped Gas Rocket Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2140672772i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGroundTelescope".into(), + prefab_hash: -2140672772i32, + desc: "".into(), + name: "Kit (Telescope)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 341030083i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGrowLight".into(), + prefab_hash: 341030083i32, + desc: "".into(), + name: "Kit (Grow Light)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1022693454i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHarvie".into(), + prefab_hash: -1022693454i32, + desc: "".into(), + name: "Kit (Harvie)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1710540039i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHeatExchanger".into(), + prefab_hash: -1710540039i32, + desc: "".into(), + name: "Kit Heat Exchanger".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 844391171i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHorizontalAutoMiner".into(), + prefab_hash: 844391171i32, + desc: "".into(), + name: "Kit (OGRE)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2098556089i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHydraulicPipeBender".into(), + prefab_hash: -2098556089i32, + desc: "".into(), + name: "Kit (Hydraulic Pipe Bender)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -927931558i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHydroponicAutomated".into(), + prefab_hash: -927931558i32, + desc: "".into(), + name: "Kit (Automated Hydroponics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2057179799i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHydroponicStation".into(), + prefab_hash: 2057179799i32, + desc: "".into(), + name: "Kit (Hydroponic Station)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 288111533i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitIceCrusher".into(), + prefab_hash: 288111533i32, + desc: "".into(), + name: "Kit (Ice Crusher)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2067655311i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInsulatedLiquidPipe".into(), + prefab_hash: 2067655311i32, + desc: "".into(), + name: "Kit (Insulated Liquid Pipe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 452636699i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInsulatedPipe".into(), + prefab_hash: 452636699i32, + desc: "".into(), + name: "Kit (Insulated Pipe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -27284803i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInsulatedPipeUtility".into(), + prefab_hash: -27284803i32, + desc: "".into(), + name: "Kit (Insulated Pipe Utility Gas)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1831558953i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInsulatedPipeUtilityLiquid".into(), + prefab_hash: -1831558953i32, + desc: "".into(), + name: "Kit (Insulated Pipe Utility Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1935945891i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInteriorDoors".into(), + prefab_hash: 1935945891i32, + desc: "".into(), + name: "Kit (Interior Doors)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 489494578i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLadder".into(), + prefab_hash: 489494578i32, + desc: "".into(), + name: "Kit (Ladder)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1817007843i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLandingPadAtmos".into(), + prefab_hash: 1817007843i32, + desc: "".into(), + name: "Kit (Landing Pad Atmospherics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 293581318i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLandingPadBasic".into(), + prefab_hash: 293581318i32, + desc: "".into(), + name: "Kit (Landing Pad Basic)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1267511065i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLandingPadWaypoint".into(), + prefab_hash: -1267511065i32, + desc: "".into(), + name: "Kit (Landing Pad Runway)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 450164077i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLargeDirectHeatExchanger".into(), + prefab_hash: 450164077i32, + desc: "".into(), + name: "Kit (Large Direct Heat Exchanger)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 847430620i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLargeExtendableRadiator".into(), + prefab_hash: 847430620i32, + desc: "".into(), + name: "Kit (Large Extendable Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2039971217i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLargeSatelliteDish".into(), + prefab_hash: -2039971217i32, + desc: "".into(), + name: "Kit (Large Satellite Dish)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1854167549i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLaunchMount".into(), + prefab_hash: -1854167549i32, + desc: "".into(), + name: "Kit (Launch Mount)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -174523552i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLaunchTower".into(), + prefab_hash: -174523552i32, + desc: "".into(), + name: "Kit (Rocket Launch Tower)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1951126161i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidRegulator".into(), + prefab_hash: 1951126161i32, + desc: "".into(), + name: "Kit (Liquid Regulator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -799849305i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidTank".into(), + prefab_hash: -799849305i32, + desc: "".into(), + name: "Kit (Liquid Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 617773453i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidTankInsulated".into(), + prefab_hash: 617773453i32, + desc: "".into(), + name: "Kit (Insulated Liquid Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1805020897i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidTurboVolumePump".into(), + prefab_hash: -1805020897i32, + desc: "".into(), + name: "Kit (Turbo Volume Pump - Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1571996765i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidUmbilical".into(), + prefab_hash: 1571996765i32, + desc: "".into(), + name: "Kit (Liquid Umbilical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 882301399i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLocker".into(), + prefab_hash: 882301399i32, + desc: "".into(), + name: "Kit (Locker)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1512322581i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicCircuit".into(), + prefab_hash: 1512322581i32, + desc: "".into(), + name: "Kit (IC Housing)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1997293610i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicInputOutput".into(), + prefab_hash: 1997293610i32, + desc: "".into(), + name: "Kit (Logic I/O)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2098214189i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicMemory".into(), + prefab_hash: -2098214189i32, + desc: "".into(), + name: "Kit (Logic Memory)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 220644373i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicProcessor".into(), + prefab_hash: 220644373i32, + desc: "".into(), + name: "Kit (Logic Processor)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 124499454i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicSwitch".into(), + prefab_hash: 124499454i32, + desc: "".into(), + name: "Kit (Logic Switch)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1005397063i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicTransmitter".into(), + prefab_hash: 1005397063i32, + desc: "".into(), + name: "Kit (Logic Transmitter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -344968335i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitMotherShipCore".into(), + prefab_hash: -344968335i32, + desc: "".into(), + name: "Kit (Mothership)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2038889137i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitMusicMachines".into(), + prefab_hash: -2038889137i32, + desc: "".into(), + name: "Kit (Music Machines)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1752768283i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPassiveLargeRadiatorGas".into(), + prefab_hash: -1752768283i32, + desc: "".into(), + name: "Kit (Medium Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1453961898i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPassiveLargeRadiatorLiquid".into(), + prefab_hash: 1453961898i32, + desc: "".into(), + name: "Kit (Medium Radiator Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 636112787i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPassthroughHeatExchanger".into(), + prefab_hash: 636112787i32, + desc: "".into(), + name: "Kit (CounterFlow Heat Exchanger)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2062364768i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPictureFrame".into(), + prefab_hash: -2062364768i32, + desc: "".into(), + name: "Kit Picture Frame".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1619793705i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipe".into(), + prefab_hash: -1619793705i32, + desc: "".into(), + name: "Kit (Pipe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1166461357i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeLiquid".into(), + prefab_hash: -1166461357i32, + desc: "".into(), + name: "Kit (Liquid Pipe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -827125300i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeOrgan".into(), + prefab_hash: -827125300i32, + desc: "".into(), + name: "Kit (Pipe Organ)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 920411066i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeRadiator".into(), + prefab_hash: 920411066i32, + desc: "".into(), + name: "Kit (Pipe Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1697302609i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeRadiatorLiquid".into(), + prefab_hash: -1697302609i32, + desc: "".into(), + name: "Kit (Pipe Radiator Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1934508338i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeUtility".into(), + prefab_hash: 1934508338i32, + desc: "".into(), + name: "Kit (Pipe Utility Gas)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 595478589i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeUtilityLiquid".into(), + prefab_hash: 595478589i32, + desc: "".into(), + name: "Kit (Pipe Utility Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 119096484i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPlanter".into(), + prefab_hash: 119096484i32, + desc: "".into(), + name: "Kit (Planter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1041148999i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPortablesConnector".into(), + prefab_hash: 1041148999i32, + desc: "".into(), + name: "Kit (Portables Connector)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 291368213i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPowerTransmitter".into(), + prefab_hash: 291368213i32, + desc: "".into(), + name: "Kit (Power Transmitter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -831211676i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPowerTransmitterOmni".into(), + prefab_hash: -831211676i32, + desc: "".into(), + name: "Kit (Power Transmitter Omni)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2015439334i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPoweredVent".into(), + prefab_hash: 2015439334i32, + desc: "".into(), + name: "Kit (Powered Vent)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -121514007i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPressureFedGasEngine".into(), + prefab_hash: -121514007i32, + desc: "".into(), + name: "Kit (Pressure Fed Gas Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -99091572i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPressureFedLiquidEngine".into(), + prefab_hash: -99091572i32, + desc: "".into(), + name: "Kit (Pressure Fed Liquid Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 123504691i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPressurePlate".into(), + prefab_hash: 123504691i32, + desc: "".into(), + name: "Kit (Trigger Plate)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1921918951i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPumpedLiquidEngine".into(), + prefab_hash: 1921918951i32, + desc: "".into(), + name: "Kit (Pumped Liquid Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 750176282i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRailing".into(), + prefab_hash: 750176282i32, + desc: "".into(), + name: "Kit (Railing)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 849148192i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRecycler".into(), + prefab_hash: 849148192i32, + desc: "".into(), + name: "Kit (Recycler)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1181371795i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRegulator".into(), + prefab_hash: 1181371795i32, + desc: "".into(), + name: "Kit (Pressure Regulator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1459985302i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitReinforcedWindows".into(), + prefab_hash: 1459985302i32, + desc: "".into(), + name: "Kit (Reinforced Windows)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 724776762i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitResearchMachine".into(), + prefab_hash: 724776762i32, + desc: "".into(), + name: "Kit Research Machine".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1574688481i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRespawnPointWallMounted".into(), + prefab_hash: 1574688481i32, + desc: "".into(), + name: "Kit (Respawn)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1396305045i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketAvionics".into(), + prefab_hash: 1396305045i32, + desc: "".into(), + name: "Kit (Avionics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -314072139i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketBattery".into(), + prefab_hash: -314072139i32, + desc: "".into(), + name: "Kit (Rocket Battery)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 479850239i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketCargoStorage".into(), + prefab_hash: 479850239i32, + desc: "".into(), + name: "Kit (Rocket Cargo Storage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -303008602i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketCelestialTracker".into(), + prefab_hash: -303008602i32, + desc: "".into(), + name: "Kit (Rocket Celestial Tracker)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 721251202i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketCircuitHousing".into(), + prefab_hash: 721251202i32, + desc: "".into(), + name: "Kit (Rocket Circuit Housing)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1256996603i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketDatalink".into(), + prefab_hash: -1256996603i32, + desc: "".into(), + name: "Kit (Rocket Datalink)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1629347579i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketGasFuelTank".into(), + prefab_hash: -1629347579i32, + desc: "".into(), + name: "Kit (Rocket Gas Fuel Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2032027950i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketLiquidFuelTank".into(), + prefab_hash: 2032027950i32, + desc: "".into(), + name: "Kit (Rocket Liquid Fuel Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -636127860i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketManufactory".into(), + prefab_hash: -636127860i32, + desc: "".into(), + name: "Kit (Rocket Manufactory)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -867969909i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketMiner".into(), + prefab_hash: -867969909i32, + desc: "".into(), + name: "Kit (Rocket Miner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1753647154i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketScanner".into(), + prefab_hash: 1753647154i32, + desc: "".into(), + name: "Kit (Rocket Scanner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -932335800i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketTransformerSmall".into(), + prefab_hash: -932335800i32, + desc: "".into(), + name: "Kit (Transformer Small (Rocket))".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1827215803i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRoverFrame".into(), + prefab_hash: 1827215803i32, + desc: "".into(), + name: "Kit (Rover Frame)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 197243872i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRoverMKI".into(), + prefab_hash: 197243872i32, + desc: "".into(), + name: "Kit (Rover Mk I)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 323957548i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSDBHopper".into(), + prefab_hash: 323957548i32, + desc: "".into(), + name: "Kit (SDB Hopper)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 178422810i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSatelliteDish".into(), + prefab_hash: 178422810i32, + desc: "".into(), + name: "Kit (Medium Satellite Dish)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 578078533i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSecurityPrinter".into(), + prefab_hash: 578078533i32, + desc: "".into(), + name: "Kit (Security Printer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1776897113i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSensor".into(), + prefab_hash: -1776897113i32, + desc: "".into(), + name: "Kit (Sensors)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 735858725i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitShower".into(), + prefab_hash: 735858725i32, + desc: "".into(), + name: "Kit (Shower)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 529996327i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSign".into(), + prefab_hash: 529996327i32, + desc: "".into(), + name: "Kit (Sign)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 326752036i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSleeper".into(), + prefab_hash: 326752036i32, + desc: "".into(), + name: "Kit (Sleeper)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1332682164i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSmallDirectHeatExchanger".into(), + prefab_hash: -1332682164i32, + desc: "".into(), + name: "Kit (Small Direct Heat Exchanger)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1960952220i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSmallSatelliteDish".into(), + prefab_hash: 1960952220i32, + desc: "".into(), + name: "Kit (Small Satellite Dish)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1924492105i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolarPanel".into(), + prefab_hash: -1924492105i32, + desc: "".into(), + name: "Kit (Solar Panel)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 844961456i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolarPanelBasic".into(), + prefab_hash: 844961456i32, + desc: "".into(), + name: "Kit (Solar Panel Basic)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -528695432i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolarPanelBasicReinforced".into(), + prefab_hash: -528695432i32, + desc: "".into(), + name: "Kit (Solar Panel Basic Heavy)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -364868685i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolarPanelReinforced".into(), + prefab_hash: -364868685i32, + desc: "".into(), + name: "Kit (Solar Panel Heavy)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1293995736i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolidGenerator".into(), + prefab_hash: 1293995736i32, + desc: "".into(), + name: "Kit (Solid Generator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 969522478i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSorter".into(), + prefab_hash: 969522478i32, + desc: "".into(), + name: "Kit (Sorter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -126038526i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSpeaker".into(), + prefab_hash: -126038526i32, + desc: "".into(), + name: "Kit (Speaker)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1013244511i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStacker".into(), + prefab_hash: 1013244511i32, + desc: "".into(), + name: "Kit (Stacker)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 170878959i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStairs".into(), + prefab_hash: 170878959i32, + desc: "".into(), + name: "Kit (Stairs)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1868555784i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStairwell".into(), + prefab_hash: -1868555784i32, + desc: "".into(), + name: "Kit (Stairwell)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2133035682i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStandardChute".into(), + prefab_hash: 2133035682i32, + desc: "".into(), + name: "Kit (Powered Chutes)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1821571150i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStirlingEngine".into(), + prefab_hash: -1821571150i32, + desc: "".into(), + name: "Kit (Stirling Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1088892825i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSuitStorage".into(), + prefab_hash: 1088892825i32, + desc: "".into(), + name: "Kit (Suit Storage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1361598922i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTables".into(), + prefab_hash: -1361598922i32, + desc: "".into(), + name: "Kit (Tables)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 771439840i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTank".into(), + prefab_hash: 771439840i32, + desc: "".into(), + name: "Kit (Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1021053608i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTankInsulated".into(), + prefab_hash: 1021053608i32, + desc: "".into(), + name: "Kit (Tank Insulated)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 529137748i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitToolManufactory".into(), + prefab_hash: 529137748i32, + desc: "".into(), + name: "Kit (Tool Manufactory)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -453039435i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTransformer".into(), + prefab_hash: -453039435i32, + desc: "".into(), + name: "Kit (Transformer Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 665194284i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTransformerSmall".into(), + prefab_hash: 665194284i32, + desc: "".into(), + name: "Kit (Transformer Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1590715731i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTurbineGenerator".into(), + prefab_hash: -1590715731i32, + desc: "".into(), + name: "Kit (Turbine Generator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1248429712i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTurboVolumePump".into(), + prefab_hash: -1248429712i32, + desc: "".into(), + name: "Kit (Turbo Volume Pump - Gas)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1798044015i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitUprightWindTurbine".into(), + prefab_hash: -1798044015i32, + desc: "".into(), + name: "Kit (Upright Wind Turbine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2038384332i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitVendingMachine".into(), + prefab_hash: -2038384332i32, + desc: "".into(), + name: "Kit (Vending Machine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1867508561i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitVendingMachineRefrigerated".into(), + prefab_hash: -1867508561i32, + desc: "".into(), + name: "Kit (Vending Machine Refrigerated)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1826855889i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWall".into(), + prefab_hash: -1826855889i32, + desc: "".into(), + name: "Kit (Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1625214531i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallArch".into(), + prefab_hash: 1625214531i32, + desc: "".into(), + name: "Kit (Arched Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -846838195i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallFlat".into(), + prefab_hash: -846838195i32, + desc: "".into(), + name: "Kit (Flat Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -784733231i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallGeometry".into(), + prefab_hash: -784733231i32, + desc: "".into(), + name: "Kit (Geometric Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -524546923i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallIron".into(), + prefab_hash: -524546923i32, + desc: "".into(), + name: "Kit (Iron Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -821868990i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallPadded".into(), + prefab_hash: -821868990i32, + desc: "".into(), + name: "Kit (Padded Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 159886536i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWaterBottleFiller".into(), + prefab_hash: 159886536i32, + desc: "".into(), + name: "Kit (Water Bottle Filler)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 611181283i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWaterPurifier".into(), + prefab_hash: 611181283i32, + desc: "".into(), + name: "Kit (Water Purifier)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 337505889i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWeatherStation".into(), + prefab_hash: 337505889i32, + desc: "".into(), + name: "Kit (Weather Station)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -868916503i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWindTurbine".into(), + prefab_hash: -868916503i32, + desc: "".into(), + name: "Kit (Wind Turbine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1779979754i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWindowShutter".into(), + prefab_hash: 1779979754i32, + desc: "".into(), + name: "Kit (Window Shutter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -743968726i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLabeller".into(), + prefab_hash: -743968726i32, + desc: "A labeller lets you set names and values on a variety of devices and structures, including Console and Logic." + .into(), + name: "Labeller".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 141535121i32, + ItemCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLaptop".into(), + prefab_hash: 141535121i32, + desc: "The Laptop functions as a portable IC editor. To operate the Laptop it must be powered with a battery, have a IC Editor Motherboard in the motherboard slot, and an Integrated Circuit (IC10) in the Programmable Chip Slot.\n\nYou must place the laptop down to interact with the onsreen UI.\n \nConnects to Logic Transmitter" + .into(), + name: "Laptop".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::PressureExternal, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::TemperatureExternal, MemoryAccess::Read), + (LogicType::PositionX, MemoryAccess::Read), (LogicType::PositionY, + MemoryAccess::Read), (LogicType::PositionZ, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: true, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip }, SlotInfo { name : "Battery".into(), typ : + Class::Battery }, SlotInfo { name : "Motherboard".into(), typ : + Class::Motherboard } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 2134647745i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLeadIngot".into(), + prefab_hash: 2134647745i32, + desc: "".into(), + name: "Ingot (Lead)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Lead".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -190236170i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLeadOre".into(), + prefab_hash: -190236170i32, + desc: "Lead is a chemical element with the symbol \"Pb\". It is a dense, heavy metal with a low melting point. Lead is a used to make a variety of things such as alloys like Ingot (Solder) and munitions." + .into(), + name: "Ore (Lead)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Lead".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1949076595i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLightSword".into(), + prefab_hash: 1949076595i32, + desc: "A charming, if useless, pseudo-weapon. (Creative only.)".into(), + name: "Light Sword".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -185207387i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidCanisterEmpty".into(), + prefab_hash: -185207387i32, + desc: "".into(), + name: "Liquid Canister".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::LiquidCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.05f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { + volume: 12.1f32, + }), + } + .into(), + ); + map.insert( + 777684475i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidCanisterSmart".into(), + prefab_hash: 777684475i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Liquid Canister (Smart)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::LiquidCanister, + sorting_class: SortingClass::Atmospherics, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { + volume: 18.1f32, + }), + } + .into(), + ); + map.insert( + 2036225202i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidDrain".into(), + prefab_hash: 2036225202i32, + desc: "".into(), + name: "Kit (Liquid Drain)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 226055671i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidPipeAnalyzer".into(), + prefab_hash: 226055671i32, + desc: "".into(), + name: "Kit (Liquid Pipe Analyzer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -248475032i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidPipeHeater".into(), + prefab_hash: -248475032i32, + desc: "Creates a Pipe Heater (Liquid)." + .into(), + name: "Pipe Heater Kit (Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2126113312i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidPipeValve".into(), + prefab_hash: -2126113312i32, + desc: "This kit creates a Liquid Valve." + .into(), + name: "Kit (Liquid Pipe Valve)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2106280569i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidPipeVolumePump".into(), + prefab_hash: -2106280569i32, + desc: "".into(), + name: "Kit (Liquid Volume Pump)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2037427578i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidTankStorage".into(), + prefab_hash: 2037427578i32, + desc: "This kit produces a Kit (Liquid Canister Storage) for refilling a Liquid Canister." + .into(), + name: "Kit (Liquid Canister Storage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 240174650i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIAngleGrinder".into(), + prefab_hash: 240174650i32, + desc: "Angles-be-gone with the trusty angle grinder. The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Angle Grinder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -2061979347i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIArcWelder".into(), + prefab_hash: -2061979347i32, + desc: "".into(), + name: "Mk II Arc Welder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1440775434i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIICrowbar".into(), + prefab_hash: 1440775434i32, + desc: "Recurso\'s entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise. The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Crowbar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 324791548i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIDrill".into(), + prefab_hash: 324791548i32, + desc: "The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature." + .into(), + name: "Mk II Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 388774906i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIDuctTape".into(), + prefab_hash: 388774906i32, + desc: "In the distant past, one of Earth\'s great champions taught a generation of \'Fix-It People\' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage." + .into(), + name: "Mk II Duct Tape".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1875271296i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIMiningDrill".into(), + prefab_hash: -1875271296i32, + desc: "The handheld \'Topo\' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, \'The Topo don\'t stopo.\' The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Mining Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Default".into()), (1u32, "Flatten".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -2015613246i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIScrewdriver".into(), + prefab_hash: -2015613246i32, + desc: "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It\'s definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units. The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Screwdriver".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -178893251i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIWireCutters".into(), + prefab_hash: -178893251i32, + desc: "Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools." + .into(), + name: "Mk II Wire Cutters".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1862001680i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIWrench".into(), + prefab_hash: 1862001680i32, + desc: "One of humanity\'s enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Wrench".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1399098998i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMarineBodyArmor".into(), + prefab_hash: 1399098998i32, + desc: "".into(), + name: "Marine Armor".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Suit, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1073631646i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMarineHelmet".into(), + prefab_hash: 1073631646i32, + desc: "".into(), + name: "Marine Helmet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1327248310i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMilk".into(), + prefab_hash: 1327248310i32, + desc: "Full disclosure, it\'s not actually \'milk\', but an Agrizero-invented synthesis of 5ml Soy Oil and 5g Fern, delicately blended in the Chemistry Station. Surprisingly filling, it can be used as an ingredient to cook other food in the Microwave or Automated Oven. Think, Muffin." + .into(), + name: "Milk".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Milk".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1650383245i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningBackPack".into(), + prefab_hash: -1650383245i32, + desc: "".into(), + name: "Mining Backpack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -676435305i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningBelt".into(), + prefab_hash: -676435305i32, + desc: "Originally developed by Recurso Espaciais for asteroid mining, the Stationeer\'s mining belt has room for two tools and eight ore stacks. While wearing the belt, ore is automatically stored there when mined. Volatile and temperature-dependent remain stable in the environmentally controlled unit." + .into(), + name: "Mining Belt".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1470787934i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningBeltMKII".into(), + prefab_hash: 1470787934i32, + desc: "A larger and more capacious mining belt, the Mk II is similar to the Mining Belt, but has 13 slots instead of the basic 8, to increase the length of your mining trips. It also has space for two tools. " + .into(), + name: "Mining Belt MK II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (3u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (4u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (5u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (6u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (7u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (8u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (9u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (10u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (11u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (12u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (13u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (14u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 15829510i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningCharge".into(), + prefab_hash: 15829510i32, + desc: "A low cost, high yield explosive with a 10 second timer.".into(), + name: "Mining Charge".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1055173191i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningDrill".into(), + prefab_hash: 1055173191i32, + desc: "The handheld \'Topo\' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, \'The Topo don\'t stopo.\'" + .into(), + name: "Mining Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Default".into()), (1u32, "Flatten".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1663349918i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningDrillHeavy".into(), + prefab_hash: -1663349918i32, + desc: "Sometimes mining trips require something a little bigger to bring home the goods. This scaled up version of the Recurso \'Topo\' design Mining Drill can literally move mountains. The heavy mining drill will remove more ground and mine ore more quickly than the standard mining drill. The heavy mining drill is also resilient to temperature and pressure. So no matter what planet or extreme weather conditions may be present, the Recurso heavy mining drill will get the job done." + .into(), + name: "Mining Drill (Heavy)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Default".into()), (1u32, "Flatten".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1258187304i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningDrillPneumatic".into(), + prefab_hash: 1258187304i32, + desc: "0.Default\n1.Flatten".into(), + name: "Pneumatic Mining Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1467558064i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMkIIToolbelt".into(), + prefab_hash: 1467558064i32, + desc: "A large, ten-slot tool belt with two extra generic slots for carrying whatever takes your fancy." + .into(), + name: "Tool Belt MK II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (3u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (4u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (5u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (6u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (7u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (8u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (9u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (10u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (11u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ + : Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ + : Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1864982322i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMuffin".into(), + prefab_hash: -1864982322i32, + desc: "A delicious, semi-healthful snack, nothing comforts a Stationeer 800 million kilometers from home like a hand-made muffin." + .into(), + name: "Muffin".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2044798572i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMushroom".into(), + prefab_hash: 2044798572i32, + desc: "A tasty food item. Unlike normal plants, it consumes Oxygen and outputs Carbon Dioxide. Mushrooms will only mature at a moderate rate in darkness, and prolonged light will kill it." + .into(), + name: "Mushroom".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Mushroom".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 982514123i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemNVG".into(), + prefab_hash: 982514123i32, + desc: "".into(), + name: "Night Vision Goggles".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Glasses, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1406385572i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemNickelIngot".into(), + prefab_hash: -1406385572i32, + desc: "".into(), + name: "Ingot (Nickel)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Nickel".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1830218956i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemNickelOre".into(), + prefab_hash: 1830218956i32, + desc: "Nickel is a chemical element with the symbol \"Ni\" and is a rare metal commonly used as a plating to prevent corrosion. Sought after by many Stationeers, Nickel is also commonly used to create several alloys." + .into(), + name: "Ore (Nickel)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Nickel".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1499471529i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemNitrice".into(), + prefab_hash: -1499471529i32, + desc: "Nitrice is the nickname given to solid Nitrogen Ice, and found on many planets and moons in the Solar System. Given the inert nature of the Nitrogen it produces, the ice is useful when making breathable atmospheres with low flammability.\n\nHighly sensitive to temperature, nitrice will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small." + .into(), + name: "Ice (Nitrice)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1805394113i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemOxite".into(), + prefab_hash: -1805394113i32, + desc: "Oxite ice is largely composed of frozen Oxygen, and found on many planets in the Solar System. Highly valuable and sought after, not all planets a Stationeer visits will have some. \n\nHighly sensitive to temperature, oxite will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small. When melting, oxite produces a mixture of Oxygen and Nitrogen." + .into(), + name: "Ice (Oxite)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 238631271i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPassiveVent".into(), + prefab_hash: 238631271i32, + desc: "This kit creates a Passive Vent among other variants." + .into(), + name: "Passive Vent".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1397583760i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPassiveVentInsulated".into(), + prefab_hash: -1397583760i32, + desc: "".into(), + name: "Kit (Insulated Passive Vent)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2042955224i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPeaceLily".into(), + prefab_hash: 2042955224i32, + desc: "A fetching lily with greater resistance to cold temperatures." + .into(), + name: "Peace Lily".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -913649823i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPickaxe".into(), + prefab_hash: -913649823i32, + desc: "When the sun sets and the Mining Drill runs dead, its batteries drained and your Solar Panel cold and lifeless, the Autolathe empty, the way forward unclear, one thing holds back the endless night of defeat: the trusty pickaxe." + .into(), + name: "Pickaxe".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1118069417i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPillHeal".into(), + prefab_hash: 1118069417i32, + desc: "Three centuries of pharmaceutical technology compressed into one small, easy to ingest pill: the Heal Pill, aka the Proton Pill, aka Mr Happy contains active enzymes, therapeutic proteins, modified microbial strains, and mammalian cell line analogues in a single-dose boost of high purity, efficacy, and potency that potentiates a swift parasympathetic immune response." + .into(), + name: "Pill (Medical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 418958601i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPillStun".into(), + prefab_hash: 418958601i32, + desc: "Through rarely publicized, the existence of this pill is an open secret. For use when all else has failed, the Sayonara Suppository immobilizes and rapidly ends the average Stationeer. The delivery mode ensures that if a Stationeer chooses to take this pill, they really have to want it." + .into(), + name: "Pill (Paralysis)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -767597887i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeAnalyizer".into(), + prefab_hash: -767597887i32, + desc: "This kit creates a Pipe Analyzer." + .into(), + name: "Kit (Pipe Analyzer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -38898376i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeCowl".into(), + prefab_hash: -38898376i32, + desc: "This creates a Pipe Cowl that can be placed on the end of pipes to expose them to the world atmospheres." + .into(), + name: "Pipe Cowl".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1532448832i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeDigitalValve".into(), + prefab_hash: -1532448832i32, + desc: "This kit creates a Digital Valve." + .into(), + name: "Kit (Digital Valve)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1134459463i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeGasMixer".into(), + prefab_hash: -1134459463i32, + desc: "This kit creates a Gas Mixer." + .into(), + name: "Kit (Gas Mixer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1751627006i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeHeater".into(), + prefab_hash: -1751627006i32, + desc: "Creates a Pipe Heater (Gas)." + .into(), + name: "Pipe Heater Kit (Gas)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1366030599i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeIgniter".into(), + prefab_hash: 1366030599i32, + desc: "".into(), + name: "Kit (Pipe Igniter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 391769637i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeLabel".into(), + prefab_hash: 391769637i32, + desc: "This kit creates a Pipe Label." + .into(), + name: "Kit (Pipe Label)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -906521320i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeLiquidRadiator".into(), + prefab_hash: -906521320i32, + desc: "This kit creates a Liquid Pipe Convection Radiator." + .into(), + name: "Kit (Liquid Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1207939683i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeMeter".into(), + prefab_hash: 1207939683i32, + desc: "This kit creates a Pipe Meter." + .into(), + name: "Kit (Pipe Meter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1796655088i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeRadiator".into(), + prefab_hash: -1796655088i32, + desc: "This kit creates a Pipe Convection Radiator." + .into(), + name: "Kit (Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 799323450i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeValve".into(), + prefab_hash: 799323450i32, + desc: "This kit creates a Valve." + .into(), + name: "Kit (Pipe Valve)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1766301997i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeVolumePump".into(), + prefab_hash: -1766301997i32, + desc: "This kit creates a Volume Pump." + .into(), + name: "Kit (Volume Pump)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1108244510i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlainCake".into(), + prefab_hash: -1108244510i32, + desc: "".into(), + name: "Cake".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1159179557i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantEndothermic_Creative".into(), + prefab_hash: -1159179557i32, + desc: "".into(), + name: "Endothermic Plant Creative".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 851290561i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantEndothermic_Genepool1".into(), + prefab_hash: 851290561i32, + desc: "Agrizero\'s Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings, when supplied with sufficient Nitrogen. The alpha variant has a peak cooling and electrolysis capacity of 90Watts and is most efficient operating in air temperatures of 0 to 40 Degrees Celsius." + .into(), + name: "Winterspawn (Alpha variant)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1414203269i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantEndothermic_Genepool2".into(), + prefab_hash: -1414203269i32, + desc: "Agrizero\'s Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings when supplied with sufficient Nitrogen. The beta variant has a peak cooling and electrolysis capacity of 150Watts and is most efficient operating in air temperatures of 14 to 24 Degrees Celsius." + .into(), + name: "Winterspawn (Beta variant)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 173023800i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantSampler".into(), + prefab_hash: 173023800i32, + desc: "The Plant Sampler allows you to take a gene sample of a growing plant. The sampler can then be placed in the Plant Genetic Analyzer to attain and interpret the results." + .into(), + name: "Plant Sampler".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -532672323i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantSwitchGrass".into(), + prefab_hash: -532672323i32, + desc: "".into(), + name: "Switch Grass".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1208890208i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantThermogenic_Creative".into(), + prefab_hash: -1208890208i32, + desc: "".into(), + name: "Thermogenic Plant Creative".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -177792789i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantThermogenic_Genepool1".into(), + prefab_hash: -177792789i32, + desc: "The Agrizero\'s-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant." + .into(), + name: "Hades Flower (Alpha strain)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1819167057i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantThermogenic_Genepool2".into(), + prefab_hash: 1819167057i32, + desc: "The Agrizero\'s-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant. The beta strain is notably more efficient than the earlier, more experimental alpha variant." + .into(), + name: "Hades Flower (Beta strain)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 662053345i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlasticSheets".into(), + prefab_hash: 662053345i32, + desc: "".into(), + name: "Plastic Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1929046963i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPotato".into(), + prefab_hash: 1929046963i32, + desc: " Potatoes are a simple, fast growing crop that can keep Stationeers alive in emergencies." + .into(), + name: "Potato".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Potato".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2111886401i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPotatoBaked".into(), + prefab_hash: -2111886401i32, + desc: "".into(), + name: "Baked Potato".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 1u32, + reagents: Some(vec![("Potato".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 839924019i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPowerConnector".into(), + prefab_hash: 839924019i32, + desc: "This kit creates a Power Connector." + .into(), + name: "Kit (Power Connector)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1277828144i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPumpkin".into(), + prefab_hash: 1277828144i32, + desc: "Pumpkins are a perennial plant, with both a long growth time, and a long time between harvests. Its low requirement for darkness allows for accelerated growing if provided with extra light." + .into(), + name: "Pumpkin".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Pumpkin".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 62768076i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPumpkinPie".into(), + prefab_hash: 62768076i32, + desc: "".into(), + name: "Pumpkin Pie".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1277979876i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPumpkinSoup".into(), + prefab_hash: 1277979876i32, + desc: "Made using Cooked Pumpkin and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay" + .into(), + name: "Pumpkin Soup".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1616308158i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIce".into(), + prefab_hash: -1616308158i32, + desc: "A frozen chunk of pure Water" + .into(), + name: "Pure Ice Water".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1251009404i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceCarbonDioxide".into(), + prefab_hash: -1251009404i32, + desc: "A frozen chunk of pure Carbon Dioxide" + .into(), + name: "Pure Ice Carbon Dioxide".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 944530361i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceHydrogen".into(), + prefab_hash: 944530361i32, + desc: "A frozen chunk of pure Hydrogen" + .into(), + name: "Pure Ice Hydrogen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1715945725i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidCarbonDioxide".into(), + prefab_hash: -1715945725i32, + desc: "A frozen chunk of pure Liquid Carbon Dioxide" + .into(), + name: "Pure Ice Liquid Carbon Dioxide".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1044933269i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidHydrogen".into(), + prefab_hash: -1044933269i32, + desc: "A frozen chunk of pure Liquid Hydrogen" + .into(), + name: "Pure Ice Liquid Hydrogen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1674576569i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidNitrogen".into(), + prefab_hash: 1674576569i32, + desc: "A frozen chunk of pure Liquid Nitrogen" + .into(), + name: "Pure Ice Liquid Nitrogen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1428477399i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidNitrous".into(), + prefab_hash: 1428477399i32, + desc: "A frozen chunk of pure Liquid Nitrous Oxide" + .into(), + name: "Pure Ice Liquid Nitrous".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 541621589i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidOxygen".into(), + prefab_hash: 541621589i32, + desc: "A frozen chunk of pure Liquid Oxygen" + .into(), + name: "Pure Ice Liquid Oxygen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1748926678i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidPollutant".into(), + prefab_hash: -1748926678i32, + desc: "A frozen chunk of pure Liquid Pollutant" + .into(), + name: "Pure Ice Liquid Pollutant".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1306628937i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidVolatiles".into(), + prefab_hash: -1306628937i32, + desc: "A frozen chunk of pure Liquid Volatiles" + .into(), + name: "Pure Ice Liquid Volatiles".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1708395413i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceNitrogen".into(), + prefab_hash: -1708395413i32, + desc: "A frozen chunk of pure Nitrogen" + .into(), + name: "Pure Ice Nitrogen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 386754635i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceNitrous".into(), + prefab_hash: 386754635i32, + desc: "A frozen chunk of pure Nitrous Oxide" + .into(), + name: "Pure Ice NitrousOxide".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1150448260i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceOxygen".into(), + prefab_hash: -1150448260i32, + desc: "A frozen chunk of pure Oxygen" + .into(), + name: "Pure Ice Oxygen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1755356i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIcePollutant".into(), + prefab_hash: -1755356i32, + desc: "A frozen chunk of pure Pollutant" + .into(), + name: "Pure Ice Pollutant".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2073202179i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIcePollutedWater".into(), + prefab_hash: -2073202179i32, + desc: "A frozen chunk of Polluted Water" + .into(), + name: "Pure Ice Polluted Water".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -874791066i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceSteam".into(), + prefab_hash: -874791066i32, + desc: "A frozen chunk of pure Steam" + .into(), + name: "Pure Ice Steam".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -633723719i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceVolatiles".into(), + prefab_hash: -633723719i32, + desc: "A frozen chunk of pure Volatiles" + .into(), + name: "Pure Ice Volatiles".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 495305053i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRTG".into(), + prefab_hash: 495305053i32, + desc: "This kit creates that miracle of modern science, a Kit (Creative RTG)." + .into(), + name: "Kit (Creative RTG)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1817645803i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRTGSurvival".into(), + prefab_hash: 1817645803i32, + desc: "This kit creates a Kit (RTG)." + .into(), + name: "Kit (RTG)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1641500434i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemReagentMix".into(), + prefab_hash: -1641500434i32, + desc: "Reagent mix is pure potential. A slurry of undifferentiated ores, it is output by the Recycler and can be fed into the Centrifuge to separate and recover the individual materials. Reagent mix is also output by the Furnace when the current contents are ejected without smelting a specific ingot." + .into(), + name: "Reagent Mix".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 678483886i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRemoteDetonator".into(), + prefab_hash: 678483886i32, + desc: "".into(), + name: "Remote Detonator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1773192190i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemReusableFireExtinguisher".into(), + prefab_hash: -1773192190i32, + desc: "Requires a canister filled with any inert liquid to opperate." + .into(), + name: "Fire Extinguisher (Reusable)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister + } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 658916791i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRice".into(), + prefab_hash: 658916791i32, + desc: "Rice grows at a moderate rate as long as its supplied with plenty of water. Being more dependant on water, rice plants can easily die during periods of drought." + .into(), + name: "Rice".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Rice".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 871811564i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRoadFlare".into(), + prefab_hash: 871811564i32, + desc: "Designed to burn anywhere in the Solar System, the EZC magnesium fusee supplies its own oxygen to fuel combustion, and dispel the eternal night of space." + .into(), + name: "Road Flare".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::Flare, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2109945337i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHead".into(), + prefab_hash: 2109945337i32, + desc: "Replaceable drill head for Rocket Miner" + .into(), + name: "Mining-Drill Head (Basic)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1530764483i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadDurable".into(), + prefab_hash: 1530764483i32, + desc: "".into(), + name: "Mining-Drill Head (Durable)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 653461728i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadHighSpeedIce".into(), + prefab_hash: 653461728i32, + desc: "".into(), + name: "Mining-Drill Head (High Speed Ice)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1440678625i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadHighSpeedMineral".into(), + prefab_hash: 1440678625i32, + desc: "".into(), + name: "Mining-Drill Head (High Speed Mineral)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -380904592i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadIce".into(), + prefab_hash: -380904592i32, + desc: "".into(), + name: "Mining-Drill Head (Ice)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -684020753i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadLongTerm".into(), + prefab_hash: -684020753i32, + desc: "".into(), + name: "Mining-Drill Head (Long Term)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1083675581i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadMineral".into(), + prefab_hash: 1083675581i32, + desc: "".into(), + name: "Mining-Drill Head (Mineral)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1198702771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketScanningHead".into(), + prefab_hash: -1198702771i32, + desc: "".into(), + name: "Rocket Scanner Head".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::ScanningHead, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1661270830i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemScanner".into(), + prefab_hash: 1661270830i32, + desc: "A mysterious piece of technology, rumored to have Zrillian origins." + .into(), + name: "Handheld Scanner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 687940869i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemScrewdriver".into(), + prefab_hash: 687940869i32, + desc: "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It\'s definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units." + .into(), + name: "Screwdriver".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1981101032i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSecurityCamera".into(), + prefab_hash: -1981101032i32, + desc: "Security cameras can be paired with a Motion Sensor, then connected to a Console fitted with a Camera Display for that \'always watched\' feeling." + .into(), + name: "Security Camera".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1176140051i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSensorLenses".into(), + prefab_hash: -1176140051i32, + desc: "These Norsec glasses might not be the most fashionable thing, but when a Sensor Processing Unit (Ore Scanner) is inserted, Stationeers can use these handy glasses to x-ray the ground and find ores that are hidden beneath the surface." + .into(), + name: "Sensor Lenses".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Glasses, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Sensor Processing Unit".into(), typ : Class::SensorProcessingUnit + } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1154200014i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSensorProcessingUnitCelestialScanner".into(), + prefab_hash: -1154200014i32, + desc: "".into(), + name: "Sensor Processing Unit (Celestial Scanner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SensorProcessingUnit, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1730464583i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSensorProcessingUnitMesonScanner".into(), + prefab_hash: -1730464583i32, + desc: "The T-Ray Scanner Sensor Processing Unit can be inserted into the Sensor Lenses to show an overlay of pipes and cables. This can be useful when building behind walls or other structures." + .into(), + name: "Sensor Processing Unit (T-Ray Scanner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SensorProcessingUnit, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1219128491i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSensorProcessingUnitOreScanner".into(), + prefab_hash: -1219128491i32, + desc: "The Sensor Processing unit can be inserted into Sensor Lenses to reveal underground minerals in a HUD." + .into(), + name: "Sensor Processing Unit (Ore Scanner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SensorProcessingUnit, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -290196476i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSiliconIngot".into(), + prefab_hash: -290196476i32, + desc: "".into(), + name: "Ingot (Silicon)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Silicon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1103972403i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSiliconOre".into(), + prefab_hash: 1103972403i32, + desc: "Silicon is a chemical element with the symbol \"Si\" and is one of the most useful elements to Stationeers. Readily available throughout the universe, silicon is used in a range of alloys, glass, plastics and various electronic components a Stationeer may need to complete their mission." + .into(), + name: "Ore (Silicon)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Silicon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -929742000i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSilverIngot".into(), + prefab_hash: -929742000i32, + desc: "".into(), + name: "Ingot (Silver)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Silver".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -916518678i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSilverOre".into(), + prefab_hash: -916518678i32, + desc: "Silver is a chemical element with the symbol \"Ag\". Valued by many Stationeers for its attractive luster and sheen, it is also used in a variety of electronics components and alloys." + .into(), + name: "Ore (Silver)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Silver".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -82508479i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSolderIngot".into(), + prefab_hash: -82508479i32, + desc: "".into(), + name: "Ingot (Solder)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Solder".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -365253871i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSolidFuel".into(), + prefab_hash: -365253871i32, + desc: "".into(), + name: "Solid Fuel (Hydrocarbon)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Hydrocarbon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1883441704i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoundCartridgeBass".into(), + prefab_hash: -1883441704i32, + desc: "".into(), + name: "Sound Cartridge Bass".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SoundCartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1901500508i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoundCartridgeDrums".into(), + prefab_hash: -1901500508i32, + desc: "".into(), + name: "Sound Cartridge Drums".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SoundCartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1174735962i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoundCartridgeLeads".into(), + prefab_hash: -1174735962i32, + desc: "".into(), + name: "Sound Cartridge Leads".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SoundCartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1971419310i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoundCartridgeSynth".into(), + prefab_hash: -1971419310i32, + desc: "".into(), + name: "Sound Cartridge Synth".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SoundCartridge, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1387403148i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoyOil".into(), + prefab_hash: 1387403148i32, + desc: "".into(), + name: "Soy Oil".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Oil".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1924673028i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoybean".into(), + prefab_hash: 1924673028i32, + desc: " Soybeans grow at a moderate rate, but require atmospheric Nitrogen to grow. Its main use is to create Soy Oil" + .into(), + name: "Soybean".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Soy".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1737666461i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpaceCleaner".into(), + prefab_hash: -1737666461i32, + desc: "There was a time when humanity really wanted to keep space clean. That time has passed." + .into(), + name: "Space Cleaner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 714830451i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpaceHelmet".into(), + prefab_hash: 714830451i32, + desc: "The basic space helmet insulates Stationeers against everything from hard vacuum to weird cooking smells. Providing a pressure-controlled, breathable atmosphere, it comes with a built-in light powered by your Eva Suit Battery Cell (Small).\nIt also incorporates a lock/unlock feature to avoid accidental opening, as well as a flush function to expel and replace the internal atmosphere. If damaged, use Duct Tape to fix it, or paint it any color you like using the Paint Mixer." + .into(), + name: "Space Helmet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: Some(InternalAtmoInfo { volume: 3f32 }), + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), (LogicType::Flush, + MemoryAccess::Write), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + 675686937i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpaceIce".into(), + prefab_hash: 675686937i32, + desc: "".into(), + name: "Space Ice".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2131916219i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpaceOre".into(), + prefab_hash: 2131916219i32, + desc: "Ore mined from asteroids via the Rocket Miner which then must be processed in the Centrifuge, or Combustion Centrifuge to produce smeltable ores." + .into(), + name: "Dirty Ore".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1260618380i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpacepack".into(), + prefab_hash: -1260618380i32, + desc: "The basic CHAC spacepack isn\'t \'technically\' a jetpack, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Jetpack Basic or Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move." + .into(), + name: "Spacepack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (3u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (4u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (5u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (6u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (7u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (8u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (9u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Propellant".into(), typ : Class::GasCanister }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -688107795i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanBlack".into(), + prefab_hash: -688107795i32, + desc: "Go classic, clandestine or just plain Gothic with black paint, which can be applied to most items. Each can has 20 uses." + .into(), + name: "Spray Paint (Black)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -498464883i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanBlue".into(), + prefab_hash: -498464883i32, + desc: "What kind of a color is blue? The kind of of color that says, \'Hey, what about me?\'" + .into(), + name: "Spray Paint (Blue)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 845176977i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanBrown".into(), + prefab_hash: 845176977i32, + desc: "In more artistic Stationeers circles, the absence of brown is often lamented, but seldom changed." + .into(), + name: "Spray Paint (Brown)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1880941852i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanGreen".into(), + prefab_hash: -1880941852i32, + desc: "Green is the color of life, and longing. Paradoxically, it\'s also the color of envy, and tolerance. It denotes sickness, youth, and wealth. But really, it\'s just what light does at around 500 billionths of a meter." + .into(), + name: "Spray Paint (Green)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1645266981i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanGrey".into(), + prefab_hash: -1645266981i32, + desc: "Arguably the most popular color in the universe, grey was invented so designers had something to do." + .into(), + name: "Spray Paint (Grey)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1918456047i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanKhaki".into(), + prefab_hash: 1918456047i32, + desc: "Not so much a single color, as a category of boredom, khaki is the pigmentation equivalent of a mild depressive episode." + .into(), + name: "Spray Paint (Khaki)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -158007629i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanOrange".into(), + prefab_hash: -158007629i32, + desc: "Orange is fun, but also suggestive of hazards. Sitting proudly in the middle of the visual spectrum, it has nothing to prove." + .into(), + name: "Spray Paint (Orange)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1344257263i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanPink".into(), + prefab_hash: 1344257263i32, + desc: "With the invention of enduring chemical dyes, the 20th century bestowed associations with innocence and tenderness upon this pale tint of red. Yet classically, it was the color of seduction and eroticism. Things change." + .into(), + name: "Spray Paint (Pink)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 30686509i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanPurple".into(), + prefab_hash: 30686509i32, + desc: "Purple is a curious color. You need to be careful with purple. It can be very good, or go horribly, horribly wrong." + .into(), + name: "Spray Paint (Purple)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1514393921i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanRed".into(), + prefab_hash: 1514393921i32, + desc: "The king of colors, red is perhaps the defining tone of the universe. Linked to blood, royalty, fire and damnation, it is the chromatic expression of power." + .into(), + name: "Spray Paint (Red)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 498481505i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanWhite".into(), + prefab_hash: 498481505i32, + desc: "White looks clean, sharp and nice. But Stationeering can be a dirty job. White tends to scuff." + .into(), + name: "Spray Paint (White)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 995468116i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanYellow".into(), + prefab_hash: 995468116i32, + desc: "A caricature of light itself, yellow lacks the self-confidence of red, or the swagger of purple. It\'s less fun than orange, but less emotionally limp than khaki. It\'s hard to know when yellow is appropriate, but it persists as a primary color regardless. Suggesting that yellow gonna yellow, no matter what anyone thinks." + .into(), + name: "Spray Paint (Yellow)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1289723966i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayGun".into(), + prefab_hash: 1289723966i32, + desc: "Use with Spray cans in the Spray Can to paint structures, cables and pipes. Much more efficient and faster than doing it with individual spray cans." + .into(), + name: "Spray Gun".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Spray Can".into(), typ : Class::Bottle }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1448105779i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSteelFrames".into(), + prefab_hash: -1448105779i32, + desc: "An advanced and stronger version of Iron Frames, steel frames are placed by right-clicking. To complete construction, use Steel Sheets and a Welding Torch in your active hand." + .into(), + name: "Steel Frames".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -654790771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSteelIngot".into(), + prefab_hash: -654790771i32, + desc: "Steel ingots are a metal alloy, crafted in a Furnace by smelting Ore (Iron) and Ore (Coal) at a ratio of 3:1.\nIt may not be elegant, but Ice (Oxite) and Ice (Volatiles) can be combined at a ratio of 1:2 in a furnace to create the necessary gas mixture for smelting." + .into(), + name: "Ingot (Steel)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Steel".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 38555961i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSteelSheets".into(), + prefab_hash: 38555961i32, + desc: "An advanced building material, Ingot (Steel) sheets are used when constructing a Steel Frame and several other wall types." + .into(), + name: "Steel Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2038663432i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemStelliteGlassSheets".into(), + prefab_hash: -2038663432i32, + desc: "A stronger glass substitute.".into(), + name: "Stellite Glass Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1897868623i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemStelliteIngot".into(), + prefab_hash: -1897868623i32, + desc: "".into(), + name: "Ingot (Stellite)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Stellite".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2111910840i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSugar".into(), + prefab_hash: 2111910840i32, + desc: "".into(), + name: "Sugar".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Sugar".into(), 10f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1335056202i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSugarCane".into(), + prefab_hash: -1335056202i32, + desc: "".into(), + name: "Sugarcane".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Sugar".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1274308304i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSuitModCryogenicUpgrade".into(), + prefab_hash: -1274308304i32, + desc: "Enables suits with basic cooling functionality to work with cryogenic liquid." + .into(), + name: "Cryogenic Suit Upgrade".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SuitMod, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -229808600i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTablet".into(), + prefab_hash: -229808600i32, + desc: "The Xigo handheld \'Padi\' tablet is an all-purpose data platform, provided as standard issue to all Stationeers. A dynamic multi-tool that accepts a range of cartridges, the Padi becomes an Atmos Analyzer or Tracker, Medical Analyzer, Ore Scanner, eReader, and various other functions." + .into(), + name: "Handheld Tablet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Cartridge".into(), typ : Class::Cartridge } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 111280987i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTerrainManipulator".into(), + prefab_hash: 111280987i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Terrain Manipulator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Dirt Canister".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -998592080i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTomato".into(), + prefab_hash: -998592080i32, + desc: "Tomato plants are perennial, and will produce multiple harvests without needing to be replanted. Once the plant is mature, it will fruit at a moderate pace." + .into(), + name: "Tomato".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Tomato".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 688734890i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTomatoSoup".into(), + prefab_hash: 688734890i32, + desc: "Made using Cooked Tomatos and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine." + .into(), + name: "Tomato Soup".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -355127880i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemToolBelt".into(), + prefab_hash: -355127880i32, + desc: "If there\'s one piece of equipment that embodies Stationeer life above all else, it\'s the humble toolbelt (Editor\'s note: a recent ODA survey of iconic Stationeer equipment also rated the smoking, toxic ruins of an over-pressurized Furnace lying amid the charred remains of your latest base very highly).\nDesigned to meet the most strict-ish ODA safety standards, the toolbelt\'s eight slots hold one thing: tools, and Cable Coil. Not to be confused with the Mining Belt." + .into(), + name: "Tool Belt".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ + : Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name : + "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ + : Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -800947386i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTropicalPlant".into(), + prefab_hash: -800947386i32, + desc: "An anthurium, evolved in the jungles of South America, which will tolerate higher temperatures than most plants." + .into(), + name: "Tropical Lily".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1516581844i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemUraniumOre".into(), + prefab_hash: -1516581844i32, + desc: "In 1934, Enrico Fermi noticed that bombarding uranium with neutrons produced a burst of beta rays, and a new material. This process was named \'nuclear fission\', and resulted in cheap energy, the Cold War, and countless thousand deaths. While reasonably common throughout the Solar System, Stationeers are wary of the material." + .into(), + name: "Ore (Uranium)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Uranium".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1253102035i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemVolatiles".into(), + prefab_hash: 1253102035i32, + desc: "An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity\'s sake, these are often displayed as H2 by devices like the Atmos Analyzer.\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n" + .into(), + name: "Ice (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1567752627i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWallCooler".into(), + prefab_hash: -1567752627i32, + desc: "This kit creates a Wall Cooler." + .into(), + name: "Kit (Wall Cooler)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1880134612i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWallHeater".into(), + prefab_hash: 1880134612i32, + desc: "This kit creates a Kit (Wall Heater)." + .into(), + name: "Kit (Wall Heater)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1108423476i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWallLight".into(), + prefab_hash: 1108423476i32, + desc: "This kit creates any one of ten Kit (Lights) variants." + .into(), + name: "Kit (Lights)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 156348098i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaspaloyIngot".into(), + prefab_hash: 156348098i32, + desc: "".into(), + name: "Ingot (Waspaloy)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Waspaloy".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 107741229i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterBottle".into(), + prefab_hash: 107741229i32, + desc: "Delicious and pure H20, refined from local sources as varied as Venusian ice and trans-Solar comets. Empty bottles can be refilled using the Water Bottle Filler." + .into(), + name: "Water Bottle".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::LiquidBottle, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 309693520i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterPipeDigitalValve".into(), + prefab_hash: 309693520i32, + desc: "".into(), + name: "Kit (Liquid Digital Valve)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -90898877i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterPipeMeter".into(), + prefab_hash: -90898877i32, + desc: "".into(), + name: "Kit (Liquid Pipe Meter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1721846327i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterWallCooler".into(), + prefab_hash: -1721846327i32, + desc: "".into(), + name: "Kit (Liquid Wall Cooler)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -598730959i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWearLamp".into(), + prefab_hash: -598730959i32, + desc: "".into(), + name: "Headlamp".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -2066892079i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWeldingTorch".into(), + prefab_hash: -2066892079i32, + desc: "Stored in the standard issue Stationeers Tool Belt, the Arlite welding torch is used to construct a range of essential structures.\nAn upgraded version of the classic \'Zairo\' model first manufactured by ExMin for modular space habitat assembly, the Arlite is powered by a single Canister (Fuel) and designed to function equally well in deep space and deep gravity wells." + .into(), + name: "Welding Torch".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.5f32, + radiation_factor: 0.5f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1057658015i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWheat".into(), + prefab_hash: -1057658015i32, + desc: "A classical symbol of growth and new life, wheat takes a moderate time to grow. Its main use is to create flour using the Reagent Processor." + .into(), + name: "Wheat".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Carbon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1535854074i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWireCutters".into(), + prefab_hash: 1535854074i32, + desc: "Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools." + .into(), + name: "Wire Cutters".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -504717121i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWirelessBatteryCellExtraLarge".into(), + prefab_hash: -504717121i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Wireless Battery Cell Extra Large".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + -1826023284i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageAirConditioner1".into(), + prefab_hash: -1826023284i32, + desc: "".into(), + name: "Wreckage Air Conditioner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 169888054i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageAirConditioner2".into(), + prefab_hash: 169888054i32, + desc: "".into(), + name: "Wreckage Air Conditioner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -310178617i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageHydroponicsTray1".into(), + prefab_hash: -310178617i32, + desc: "".into(), + name: "Wreckage Hydroponics Tray".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -997763i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageLargeExtendableRadiator01".into(), + prefab_hash: -997763i32, + desc: "".into(), + name: "Wreckage Large Extendable Radiator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 391453348i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureRTG1".into(), + prefab_hash: 391453348i32, + desc: "".into(), + name: "Wreckage Structure RTG".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -834664349i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation001".into(), + prefab_hash: -834664349i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1464424921i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation002".into(), + prefab_hash: 1464424921i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 542009679i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation003".into(), + prefab_hash: 542009679i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1104478996i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation004".into(), + prefab_hash: -1104478996i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -919745414i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation005".into(), + prefab_hash: -919745414i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1344576960i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation006".into(), + prefab_hash: 1344576960i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 656649558i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation007".into(), + prefab_hash: 656649558i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1214467897i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation008".into(), + prefab_hash: -1214467897i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1662394403i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageTurbineGenerator1".into(), + prefab_hash: -1662394403i32, + desc: "".into(), + name: "Wreckage Turbine Generator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 98602599i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageTurbineGenerator2".into(), + prefab_hash: 98602599i32, + desc: "".into(), + name: "Wreckage Turbine Generator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1927790321i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageTurbineGenerator3".into(), + prefab_hash: 1927790321i32, + desc: "".into(), + name: "Wreckage Turbine Generator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1682930158i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageWallCooler1".into(), + prefab_hash: -1682930158i32, + desc: "".into(), + name: "Wreckage Wall Cooler".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 45733800i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageWallCooler2".into(), + prefab_hash: 45733800i32, + desc: "".into(), + name: "Wreckage Wall Cooler".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1886261558i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWrench".into(), + prefab_hash: -1886261558i32, + desc: "One of humanity\'s enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures" + .into(), + name: "Wrench".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1932952652i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "KitSDBSilo".into(), + prefab_hash: 1932952652i32, + desc: "This kit creates a SDB Silo." + .into(), + name: "Kit (SDB Silo)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 231903234i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "KitStructureCombustionCentrifuge".into(), + prefab_hash: 231903234i32, + desc: "".into(), + name: "Kit (Combustion Centrifuge)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1427415566i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "KitchenTableShort".into(), + prefab_hash: -1427415566i32, + desc: "".into(), + name: "Kitchen Table (Short)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -78099334i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "KitchenTableSimpleShort".into(), + prefab_hash: -78099334i32, + desc: "".into(), + name: "Kitchen Table (Simple Short)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1068629349i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "KitchenTableSimpleTall".into(), + prefab_hash: -1068629349i32, + desc: "".into(), + name: "Kitchen Table (Simple Tall)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1386237782i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "KitchenTableTall".into(), + prefab_hash: -1386237782i32, + desc: "".into(), + name: "Kitchen Table (Tall)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1605130615i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "Lander".into(), + prefab_hash: 1605130615i32, + desc: "".into(), + name: "Lander".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "Entity".into(), typ : Class::Entity } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1295222317i32, + StructureLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_2x2CenterPiece01".into(), + prefab_hash: -1295222317i32, + desc: "Recommended for larger traders. This allows for the creation of 4x4 and 6x6 landing areas with symetrical doors" + .into(), + name: "Landingpad 2x2 Center Piece".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![].into_iter().collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + 912453390i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_BlankPiece".into(), + prefab_hash: 912453390i32, + desc: "".into(), + name: "Landingpad".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1070143159i32, + StructureLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_CenterPiece01".into(), + prefab_hash: 1070143159i32, + desc: "The target point where the trader shuttle will land. Requires a clear view of the sky." + .into(), + name: "Landingpad Center".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![].into_iter().collect(), + modes: Some( + vec![ + (0u32, "None".into()), (1u32, "NoContact".into()), (2u32, + "Moving".into()), (3u32, "Holding".into()), (4u32, "Landed" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ); + map.insert( + 1101296153i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_CrossPiece".into(), + prefab_hash: 1101296153i32, + desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area." + .into(), + name: "Landingpad Cross".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2066405918i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_DataConnectionPiece".into(), + prefab_hash: -2066405918i32, + desc: "Provides power to the landing pad. The data port must be connected to the data port of a computer with a communications motherboard for a trader to be called in to land." + .into(), + name: "Landingpad Data And Power".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::ContactTypeId, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "None".into()), (1u32, "NoContact".into()), (2u32, + "Moving".into()), (3u32, "Holding".into()), (4u32, "Landed" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 977899131i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_DiagonalPiece01".into(), + prefab_hash: 977899131i32, + desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area." + .into(), + name: "Landingpad Diagonal".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 817945707i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_GasConnectorInwardPiece".into(), + prefab_hash: 817945707i32, + desc: "".into(), + name: "Landingpad Gas Input".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1100218307i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_GasConnectorOutwardPiece".into(), + prefab_hash: -1100218307i32, + desc: "Pumps gas purchased from a trader out of the landing pad. You can increase the landing pad\'s gas storage capacity by adding more Landingpad Gas Storage to the landing pad." + .into(), + name: "Landingpad Gas Output".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 170818567i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_GasCylinderTankPiece".into(), + prefab_hash: 170818567i32, + desc: "Increases the volume of the landing pads gas storage capacity. This volume is used for buying and selling gas to traders." + .into(), + name: "Landingpad Gas Storage".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1216167727i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_LiquidConnectorInwardPiece".into(), + prefab_hash: -1216167727i32, + desc: "".into(), + name: "Landingpad Liquid Input".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1788929869i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_LiquidConnectorOutwardPiece".into(), + prefab_hash: -1788929869i32, + desc: "Pumps liquid purchased from a trader out of the landing pad. You can increase the landing pad\'s liquid storage capacity by adding more Landingpad Gas Storage to the landing pad." + .into(), + name: "Landingpad Liquid Output".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -976273247i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_StraightPiece01".into(), + prefab_hash: -976273247i32, + desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area." + .into(), + name: "Landingpad Straight".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1872345847i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_TaxiPieceCorner".into(), + prefab_hash: -1872345847i32, + desc: "".into(), + name: "Landingpad Taxi Corner".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 146051619i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_TaxiPieceHold".into(), + prefab_hash: 146051619i32, + desc: "".into(), + name: "Landingpad Taxi Hold".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1477941080i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_TaxiPieceStraight".into(), + prefab_hash: -1477941080i32, + desc: "".into(), + name: "Landingpad Taxi Straight".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1514298582i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_ThreshholdPiece".into(), + prefab_hash: -1514298582i32, + desc: "".into(), + name: "Landingpad Threshhold".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1531272458i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "LogicStepSequencer8".into(), + prefab_hash: 1531272458i32, + desc: "The ODA does not approve of soundtracks or other distractions.\nAs such, Stationeers have had to create their own musical accompaniment to the demanding labor of building and maintaining off-world infrastructure.\nCentral to this pastime is the step sequencer, which allows Stationeers to sequence short musical patterns or loops. \n\nDIY MUSIC - GETTING STARTED\n\n1: Connect 8 Device Step Units to your step sequencer via the data port on the left hand side.\n\n2: Label each step unit, then assign step units 1 through 8 on the step sequencer using the screwdriver.\n\n3: Select the output speaker (eg Passive Speaker) where the sequencer will play the sounds. This needs to be connected to the logic network on the right hand side of the sequencer.\n\n4: Place a Stop Watch and use a Logic Reader and Logic Writer to write the time to the time variable on the sequencer.\n\n5: Set the BPM on the sequencer using a Dial and a Logic Writer to write to the sequencer\'s BPM variable. A higher bpm will play the sequence faster. \n\n6: Insert a sound cartridge of your choosing and select which variant of sound you wish to play by pushing the arrow buttons located above and below the sound cartridge slot.\n\n7: Choose the pitch of the sounds to play by setting the dial on each of your 8 step units to the desired note. With drums, each note is a different drum sounds. You can trial your sounds by pushing the activate button on each step unit (with the sequencer inactive).\n\n8: Get freaky with the Low frequency oscillator.\n\n9: Finally, activate the sequencer, Vibeoneer." + .into(), + name: "Logic Step Sequencer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Time, MemoryAccess::ReadWrite), (LogicType::Bpm, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Whole Note".into()), (1u32, "Half Note".into()), (2u32, + "Quarter Note".into()), (3u32, "Eighth Note".into()), (4u32, + "Sixteenth Note".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Sound Cartridge".into(), typ : Class::SoundCartridge } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -99064335i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "Meteorite".into(), + prefab_hash: -99064335i32, + desc: "".into(), + name: "Meteorite".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1667675295i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MonsterEgg".into(), + prefab_hash: -1667675295i32, + desc: "".into(), + name: "".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -337075633i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardComms".into(), + prefab_hash: -337075633i32, + desc: "When placed in a Computer and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land." + .into(), + name: "Communications Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 502555944i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardLogic".into(), + prefab_hash: 502555944i32, + desc: "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items." + .into(), + name: "Logic Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -127121474i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardMissionControl".into(), + prefab_hash: -127121474i32, + desc: "".into(), + name: "".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -161107071i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardProgrammableChip".into(), + prefab_hash: -161107071i32, + desc: "When placed in a Computer, the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing." + .into(), + name: "IC Editor Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -806986392i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardRockets".into(), + prefab_hash: -806986392i32, + desc: "".into(), + name: "Rocket Control Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1908268220i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardSorter".into(), + prefab_hash: -1908268220i32, + desc: "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass." + .into(), + name: "Sorter Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1930442922i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MothershipCore".into(), + prefab_hash: -1930442922i32, + desc: "A relic of from an earlier era of space ambition, Sinotai\'s mothership cores formed the central element of a generation\'s space-going creations. While Sinotai\'s pivot to smaller, modular craft upset some purists, motherships continue to be built and maintained by dedicated enthusiasts." + .into(), + name: "Mothership Core".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 155856647i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "NpcChick".into(), + prefab_hash: 155856647i32, + desc: "".into(), + name: "Chick".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Brain".into(), typ : Class::Organ }, SlotInfo { name : + "Lungs".into(), typ : Class::Organ } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 399074198i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "NpcChicken".into(), + prefab_hash: 399074198i32, + desc: "".into(), + name: "Chicken".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Brain".into(), typ : Class::Organ }, SlotInfo { name : + "Lungs".into(), typ : Class::Organ } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 248893646i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "PassiveSpeaker".into(), + prefab_hash: 248893646i32, + desc: "".into(), + name: "Passive Speaker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Volume, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::ReadWrite), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::ReadWrite), (LogicType::NameHash, + MemoryAccess::ReadWrite) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 443947415i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "PipeBenderMod".into(), + prefab_hash: 443947415i32, + desc: "Apply to an Hydraulic Pipe Bender with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." + .into(), + name: "Pipe Bender Mod".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1958705204i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "PortableComposter".into(), + prefab_hash: -1958705204i32, + desc: "A simple composting device, the basic composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires a full Liquid Canister and a battery to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat.\n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer\'s effects on plants will vary depending on the respective proportions of its ingredients.\n\n- food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for" + .into(), + name: "Portable Composter".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::Battery }, SlotInfo { name : "Liquid Canister".into(), typ : + Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 2043318949i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "PortableSolarPanel".into(), + prefab_hash: 2043318949i32, + desc: "".into(), + name: "Portable Solar Panel".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 399661231i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RailingElegant01".into(), + prefab_hash: 399661231i32, + desc: "".into(), + name: "Railing Elegant (Type 1)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1898247915i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RailingElegant02".into(), + prefab_hash: -1898247915i32, + desc: "".into(), + name: "Railing Elegant (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2072792175i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RailingIndustrial02".into(), + prefab_hash: -2072792175i32, + desc: "".into(), + name: "Railing Industrial (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 980054869i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorBlue".into(), + prefab_hash: 980054869i32, + desc: "".into(), + name: "Color Dye (Blue)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("ColorBlue".into(), 10f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 120807542i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorGreen".into(), + prefab_hash: 120807542i32, + desc: "".into(), + name: "Color Dye (Green)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("ColorGreen".into(), 10f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -400696159i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorOrange".into(), + prefab_hash: -400696159i32, + desc: "".into(), + name: "Color Dye (Orange)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some( + vec![("ColorOrange".into(), 10f64)].into_iter().collect(), + ), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1998377961i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorRed".into(), + prefab_hash: 1998377961i32, + desc: "".into(), + name: "Color Dye (Red)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("ColorRed".into(), 10f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 635208006i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorYellow".into(), + prefab_hash: 635208006i32, + desc: "".into(), + name: "Color Dye (Yellow)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some( + vec![("ColorYellow".into(), 10f64)].into_iter().collect(), + ), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -788672929i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RespawnPoint".into(), + prefab_hash: -788672929i32, + desc: "Place a respawn point to set a player entry point to your base when loading in, or returning from the dead." + .into(), + name: "Respawn Point".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -491247370i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RespawnPointWallMounted".into(), + prefab_hash: -491247370i32, + desc: "".into(), + name: "Respawn Point (Mounted)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 434786784i32, + ItemCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "Robot".into(), + prefab_hash: 434786784i32, + desc: "Designed by - presumably drunk - Norsec roboticists, AIMeE (or Automated Independent Mechanical Entity) can be a Stationeer\'s best friend, or tiresome nemesis, or both several times in the same day. \n \nIntended to unearth and retrieve ores automatically, the unit requires basic programming knowledge to operate, and IC Editor Motherboard.\n\nAIMEe has 7 modes:\n\nRobotMode.None = 0 = Do nothing\nRobotMode.None = 1 = Follow nearest player\nRobotMode.None = 2 = Move to target in straight line\nRobotMode.None = 3 = Wander around looking for ores in 15 co-ords radius\nRobotMode.None = 4 = Unload in chute input or chute bin within 3 meters / 1.5 large grids\nRobotMode.None = 5 = Path(find) to target\nRobotMode.None = 6 = Automatic assigned state, shows when storage slots are fullConnects to Logic Transmitter" + .into(), + name: "AIMeE Bot".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (3u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (4u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (5u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (6u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (7u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (8u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (9u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::PressureExternal, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TemperatureExternal, + MemoryAccess::Read), (LogicType::PositionX, MemoryAccess::Read), + (LogicType::PositionY, MemoryAccess::Read), (LogicType::PositionZ, + MemoryAccess::Read), (LogicType::VelocityMagnitude, + MemoryAccess::Read), (LogicType::VelocityRelativeX, + MemoryAccess::Read), (LogicType::VelocityRelativeY, + MemoryAccess::Read), (LogicType::VelocityRelativeZ, + MemoryAccess::Read), (LogicType::TargetX, MemoryAccess::Write), + (LogicType::TargetY, MemoryAccess::Write), (LogicType::TargetZ, + MemoryAccess::Write), (LogicType::MineablesInVicinity, + MemoryAccess::Read), (LogicType::MineablesInQueue, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::ForwardX, MemoryAccess::Read), (LogicType::ForwardY, + MemoryAccess::Read), (LogicType::ForwardZ, MemoryAccess::Read), + (LogicType::Orientation, MemoryAccess::Read), (LogicType::VelocityX, + MemoryAccess::Read), (LogicType::VelocityY, MemoryAccess::Read), + (LogicType::VelocityZ, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "None".into()), (1u32, "Follow".into()), (2u32, + "MoveToTarget".into()), (3u32, "Roam".into()), (4u32, "Unload" + .into()), (5u32, "PathToTarget".into()), (6u32, "StorageFull" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: true, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Programmable Chip".into(), typ : Class::ProgrammableChip }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 350726273i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "RoverCargo".into(), + prefab_hash: 350726273i32, + desc: "Connects to Logic Transmitter" + .into(), + name: "Rover (Cargo)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.01f32, + radiation_factor: 0.01f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (13u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (14u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (15u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: true, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Entity".into(), typ : Class::Entity }, SlotInfo { name + : "Entity".into(), typ : Class::Entity }, SlotInfo { name : "Gas Filter" + .into(), typ : Class::GasFilter }, SlotInfo { name : "Gas Filter".into(), + typ : Class::GasFilter }, SlotInfo { name : "Gas Filter".into(), typ : + Class::GasFilter }, SlotInfo { name : "Gas Canister".into(), typ : + Class::GasCanister }, SlotInfo { name : "Gas Canister".into(), typ : + Class::GasCanister }, SlotInfo { name : "Gas Canister".into(), typ : + Class::GasCanister }, SlotInfo { name : "Gas Canister".into(), typ : + Class::GasCanister }, SlotInfo { name : "Battery".into(), typ : + Class::Battery }, SlotInfo { name : "Battery".into(), typ : + Class::Battery }, SlotInfo { name : "Battery".into(), typ : + Class::Battery }, SlotInfo { name : "Container Slot".into(), typ : + Class::None }, SlotInfo { name : "Container Slot".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : + Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -2049946335i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Rover_MkI".into(), + prefab_hash: -2049946335i32, + desc: "A distant cousin of the jeep, the Mk I {Sinotai electric rover is one of the most simple and durable light vehicles in the known universe. Able to carry two passengers and cargo such as the Portable Gas Tank (Air) or , it is powered by up to three batteries, accepting everything including Battery Cell (Nuclear).\nA quad-array of hub-mounted electric engines propels the reinforced aluminium frame over most terrain and modest obstacles. While the Mk I is designed for stability in low-horizontality circumstances, if it rolls, try using your Crowbar to put it right way up.Connects to Logic Transmitter" + .into(), + name: "Rover MkI".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (2u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (6u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (7u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (8u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (9u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (10u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: true, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Entity".into(), typ : Class::Entity }, SlotInfo { name + : "Entity".into(), typ : Class::Entity }, SlotInfo { name : "Battery" + .into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), typ + : Class::Battery }, SlotInfo { name : "Battery".into(), typ : + Class::Battery }, SlotInfo { name : "".into(), + typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 861674123i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Rover_MkI_build_states".into(), + prefab_hash: 861674123i32, + desc: "".into(), + name: "Rover MKI".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -256607540i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SMGMagazine".into(), + prefab_hash: -256607540i32, + desc: "".into(), + name: "SMG Magazine".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Magazine, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1139887531i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Cocoa".into(), + prefab_hash: 1139887531i32, + desc: "".into(), + name: "Cocoa Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1290755415i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Corn".into(), + prefab_hash: -1290755415i32, + desc: "Grow a Corn." + .into(), + name: "Corn Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1990600883i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Fern".into(), + prefab_hash: -1990600883i32, + desc: "Grow a Fern." + .into(), + name: "Fern Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 311593418i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Mushroom".into(), + prefab_hash: 311593418i32, + desc: "Grow a Mushroom." + .into(), + name: "Mushroom Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1005571172i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Potato".into(), + prefab_hash: 1005571172i32, + desc: "Grow a Potato." + .into(), + name: "Potato Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1423199840i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Pumpkin".into(), + prefab_hash: 1423199840i32, + desc: "Grow a Pumpkin." + .into(), + name: "Pumpkin Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1691151239i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Rice".into(), + prefab_hash: -1691151239i32, + desc: "Grow some Rice." + .into(), + name: "Rice Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1783004244i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Soybean".into(), + prefab_hash: 1783004244i32, + desc: "Grow some Soybean." + .into(), + name: "Soybean Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1884103228i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_SugarCane".into(), + prefab_hash: -1884103228i32, + desc: "".into(), + name: "Sugarcane Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 488360169i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Switchgrass".into(), + prefab_hash: 488360169i32, + desc: "".into(), + name: "Switchgrass Seed".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1922066841i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Tomato".into(), + prefab_hash: -1922066841i32, + desc: "Grow a Tomato." + .into(), + name: "Tomato Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -654756733i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Wheet".into(), + prefab_hash: -654756733i32, + desc: "Grow some Wheat." + .into(), + name: "Wheat Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1991297271i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "SpaceShuttle".into(), + prefab_hash: -1991297271i32, + desc: "An antiquated Sinotai transport craft, long since decommissioned." + .into(), + name: "Space Shuttle".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Captain\'s Seat".into(), typ : Class::Entity }, + SlotInfo { name : "Passenger Seat Left".into(), typ : Class::Entity }, + SlotInfo { name : "Passenger Seat Right".into(), typ : Class::Entity } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1527229051i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StopWatch".into(), + prefab_hash: -1527229051i32, + desc: "".into(), + name: "Stop Watch".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Time, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1298920475i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAccessBridge".into(), + prefab_hash: 1298920475i32, + desc: "Extendable bridge that spans three grids".into(), + name: "Access Bridge".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1129453144i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureActiveVent".into(), + prefab_hash: -1129453144i32, + desc: "The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: \'Outward\' sets it to pump gas into a space until pressure is reached; \'Inward\' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward ..." + .into(), + name: "Active Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::PressureExternal, + MemoryAccess::ReadWrite), (LogicType::PressureInternal, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Outward".into()), (1u32, "Inward".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 446212963i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAdvancedComposter".into(), + prefab_hash: 446212963i32, + desc: "The advanced composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires Water and power to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat. \n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer\'s effects on plants will vary depending on the respective proportions of its ingredients.\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for up to five times\n" + .into(), + name: "Advanced Composter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, ConnectionInfo { + typ : ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 545937711i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAdvancedFurnace".into(), + prefab_hash: 545937711i32, + desc: "The advanced furnace comes with integrated inlet and outlet pumps for controlling the unit\'s internal pressure." + .into(), + name: "Advanced Furnace".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RecipeHash, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SettingInput, MemoryAccess::ReadWrite), + (LogicType::SettingOutput, MemoryAccess::ReadWrite), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + } + .into(), + ); + map.insert( + -463037670i32, + StructureLogicDeviceConsumerMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAdvancedPackagingMachine".into(), + prefab_hash: -463037670i32, + desc: "The Xigo Advanced Cannifier Multi-Plus Pro is an automateable packaging machine that uses Empty Cans and cooked food to create canned sustenance that does not decay. Note that the ACMPP only accepts cooked food and tin cans." + .into(), + name: "Advanced Packaging Machine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RecipeHash, + MemoryAccess::ReadWrite), (LogicType::CompletionRatio, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemCookedCondensedMilk".into(), "ItemCookedCorn".into(), + "ItemCookedMushroom".into(), "ItemCookedPowderedEggs".into(), + "ItemCookedPumpkin".into(), "ItemCookedRice".into(), + "ItemCookedSoybean".into(), "ItemCookedTomato".into(), "ItemEmptyCan" + .into(), "ItemMilk".into(), "ItemPotatoBaked".into(), "ItemSoyOil" + .into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: Some(FabricatorInfo { + tier: MachineTier::Undefined, + recipes: vec![ + ("ItemCannedCondensedMilk".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Milk".into(), 200f64), ("Steel" + .into(), 1f64)] .into_iter().collect() }), ("ItemCannedEdamame" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 0f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : vec![("Oil" + .into(), 1f64), ("Soy".into(), 15f64), ("Steel".into(), 1f64)] + .into_iter().collect() }), ("ItemCannedMushroom".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature + : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Mushroom".into(), 8f64), ("Oil" + .into(), 1f64), ("Steel".into(), 1f64)] .into_iter().collect() }), + ("ItemCannedPowderedEggs".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Egg".into(), 5f64), ("Oil" + .into(), 1f64), ("Steel".into(), 1f64)] .into_iter().collect() }), + ("ItemCannedRicePudding".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Oil".into(), 1f64), ("Rice" + .into(), 5f64), ("Steel".into(), 1f64)] .into_iter().collect() }), + ("ItemCornSoup".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 0f64, temperature : RecipeRange { start : 1f64, stop : + 80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64, + stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix { + rule : 0i64, is_any : true, is_any_to_remove : false, reagents : + vec![] .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Corn".into(), 5f64), ("Oil".into(), 1f64), ("Steel".into(), + 1f64)] .into_iter().collect() }), ("ItemFrenchFries".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature + : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Oil".into(), 1f64), ("Potato" + .into(), 1f64), ("Steel".into(), 1f64)] .into_iter().collect() }), + ("ItemPumpkinSoup".into(), Recipe { tier : MachineTier::TierOne, time + : 5f64, energy : 0f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Oil".into(), 1f64), ("Pumpkin".into(), 5f64), + ("Steel".into(), 1f64)] .into_iter().collect() }), ("ItemTomatoSoup" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 0f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : vec![("Oil" + .into(), 1f64), ("Steel".into(), 1f64), ("Tomato".into(), 5f64)] + .into_iter().collect() }) + ] + .into_iter() + .collect(), + }), + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ); + map.insert( + -2087593337i32, + StructureCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAirConditioner".into(), + prefab_hash: -2087593337i32, + desc: "Built using the Kit (Atmospherics), the ExMin-designed air conditioner is used to raise or lower input gas temperature.\n\t \nThe unit has three pipe connections: input, output, and waste. Gas fed into the input will be heated or cooled to reach the target temperature, while the opposite will happen to gas on the waste network.\n\nMultiple Efficiency Multipliers can effect the amount of energy the Air Conditioner uses, and these can be view on the unit\'s green Information Panel. As the temperature difference between input and waste increases, the Temperature Differential Efficiency Multiplier will decrease. If input or waste temperature is extremely hot or cold, the Operational Temperature Efficiency will decrease. If the input or waste pipe has approach low pressures, the Pressure Efficiency will decrease.\n\nPipe Convection Radiators may be useful in bringing extreme pipe temperatures back towards normal world temperatures. \n \nFor more information on using the air conditioner, consult the temperature control Guides page." + .into(), + name: "Air Conditioner".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::PressureOutput2, MemoryAccess::Read), + (LogicType::TemperatureOutput2, MemoryAccess::Read), + (LogicType::RatioOxygenOutput2, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput2, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput2, MemoryAccess::Read), + (LogicType::RatioPollutantOutput2, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput2, MemoryAccess::Read), + (LogicType::RatioWaterOutput2, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput2, MemoryAccess::Read), + (LogicType::TotalMolesOutput2, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::CombustionOutput2, MemoryAccess::Read), + (LogicType::OperationalTemperatureEfficiency, MemoryAccess::Read), + (LogicType::TemperatureDifferentialEfficiency, MemoryAccess::Read), + (LogicType::PressureEfficiency, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput2, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioSteamOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput2, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Waste }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2105052344i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAirlock".into(), + prefab_hash: -2105052344i32, + desc: "The standard airlock is a powered portal that forms the main component of an airlock chamber. As long as the airlock is not locked, it can be manually opened using a crowbar." + .into(), + name: "Airlock".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1736080881i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAirlockGate".into(), + prefab_hash: 1736080881i32, + desc: "1 x 1 modular door piece for building hangar doors.".into(), + name: "Small Hangar Door".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1811979158i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAngledBench".into(), + prefab_hash: 1811979158i32, + desc: "".into(), + name: "Bench (Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -247344692i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureArcFurnace".into(), + prefab_hash: -247344692i32, + desc: "The simplest smelting system available to the average Stationeer, Recurso\'s arc furnace was forged itself in the depths of the Solar System to help explorational geologists determine the purity of potential asteroidal mining targets.\nCo-opted by the ODA, it now provides Stationeers with a way to produce pure ingots of various resources.\nThe smelting process also releases a range of by product gases, principally Nitrogen, Carbon Dioxide, Volatiles and Oxygen in differing ratios. These can be recaptured from the atmosphere by filtering, but also make the arc furnace a risk in closed environments. \nUnlike the more advanced Furnace, the arc furnace cannot create alloys." + .into(), + name: "Arc Furnace".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::RecipeHash, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ore }, SlotInfo { name : + "Export".into(), typ : Class::Ingot } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: true, + }, + } + .into(), + ); + map.insert( + 1999523701i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAreaPowerControl".into(), + prefab_hash: 1999523701i32, + desc: "An Area Power Control (APC) has three main functions: \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network.\nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only." + .into(), + name: "Area Power Control".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Charge, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32, + "Discharging".into()), (3u32, "Charging".into()), (4u32, + "Charged".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1032513487i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAreaPowerControlReversed".into(), + prefab_hash: -1032513487i32, + desc: "An Area Power Control (APC) has three main functions. \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network. \nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only." + .into(), + name: "Area Power Control".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Charge, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32, + "Discharging".into()), (3u32, "Charging".into()), (4u32, + "Charged".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 7274344i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAutoMinerSmall".into(), + prefab_hash: 7274344i32, + desc: "The Recurso SquareDig autominer is a structure that when built will mine a vertical 2x2 shaft until it hits bedrock. The autominer can be connected to a chute system, and is controllable by a logic network. Note that the autominer outputs more ore than a conventional Mining Drill over the same area." + .into(), + name: "Autominer (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 336213101i32, + StructureLogicDeviceConsumerMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAutolathe".into(), + prefab_hash: 336213101i32, + desc: "The foundation of most Stationeer fabrication systems, the ExMin autolathe is a multi-axis molecular compositional system. Its complexity demands considerable time to assemble, but it remains an indispensable creation tool. Upgrade the device using a Autolathe Printer Mod for additional recipes and faster processing speeds.\n\t " + .into(), + name: "Autolathe".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RecipeHash, + MemoryAccess::ReadWrite), (LogicType::CompletionRatio, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name + : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), + "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" + .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), + "ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot" + .into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(), + "ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel" + .into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(), + "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: Some(FabricatorInfo { + tier: MachineTier::Undefined, + recipes: vec![ + ("CardboardBox".into(), Recipe { tier : MachineTier::TierOne, time : + 2f64, energy : 120f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Silicon".into(), 2f64)] .into_iter().collect() }), + ("ItemCableCoil".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 200f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Copper".into(), 0.5f64)] .into_iter().collect() }), + ("ItemCoffeeMug".into(), Recipe { tier : MachineTier::TierOne, time : + 1f64, energy : 70f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 1f64)] .into_iter().collect() }), + ("ItemEggCarton".into(), Recipe { tier : MachineTier::TierOne, time : + 10f64, energy : 100f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Silicon".into(), 2f64)] .into_iter().collect() }), + ("ItemEmptyCan".into(), Recipe { tier : MachineTier::TierOne, time : + 1f64, energy : 70f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Steel".into(), 1f64)] .into_iter().collect() }), + ("ItemEvaSuit".into(), Recipe { tier : MachineTier::TierOne, time : + 15f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 5f64), ("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemGlassSheets".into(), Recipe { tier : + MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Silicon".into(), 2f64)] + .into_iter().collect() }), ("ItemIronFrames".into(), Recipe { tier : + MachineTier::TierOne, time : 4f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 4f64)] + .into_iter().collect() }), ("ItemIronSheets".into(), Recipe { tier : + MachineTier::TierOne, time : 1f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 1f64)] + .into_iter().collect() }), ("ItemKitAccessBridge".into(), Recipe { + tier : MachineTier::TierOne, time : 30f64, energy : 15000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 2f64), ("Solder".into(), 2f64), ("Steel".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitArcFurnace".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron" + .into(), 20f64)] .into_iter().collect() }), ("ItemKitAutolathe" + .into(), Recipe { tier : MachineTier::TierOne, time : 180f64, energy + : 36000f64, temperature : RecipeRange { start : 1f64, stop : + 80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64, + stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix { + rule : 0i64, is_any : true, is_any_to_remove : false, reagents : + vec![] .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 10f64), ("Gold".into(), 2f64), ("Iron".into(), + 20f64)] .into_iter().collect() }), ("ItemKitBeds".into(), Recipe { + tier : MachineTier::TierOne, time : 10f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 5f64), ("Iron".into(), 20f64)] .into_iter().collect() }), + ("ItemKitBlastDoor".into(), Recipe { tier : MachineTier::TierTwo, + time : 10f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 3f64), ("Steel".into(), 15f64)] + .into_iter().collect() }), ("ItemKitCentrifuge".into(), Recipe { tier + : MachineTier::TierOne, time : 60f64, energy : 18000f64, temperature + : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron" + .into(), 20f64)] .into_iter().collect() }), ("ItemKitChairs".into(), + Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 5f64), ("Iron".into(), 20f64)] .into_iter().collect() }), + ("ItemKitChute".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemKitCompositeCladding".into(), Recipe { tier : + MachineTier::TierOne, time : 1f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 1f64)] + .into_iter().collect() }), ("ItemKitCompositeFloorGrating".into(), + Recipe { tier : MachineTier::TierOne, time : 3f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 1f64)] .into_iter().collect() }), ("ItemKitCrate".into(), Recipe { + tier : MachineTier::TierOne, time : 10f64, energy : 200f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 10f64)] .into_iter().collect() }), ("ItemKitCrateMkII".into(), Recipe + { tier : MachineTier::TierTwo, time : 10f64, energy : 200f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Gold".into(), + 5f64), ("Iron".into(), 10f64)] .into_iter().collect() }), + ("ItemKitCrateMount".into(), Recipe { tier : MachineTier::TierOne, + time : 10f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 10f64)] .into_iter().collect() }), + ("ItemKitDeepMiner".into(), Recipe { tier : MachineTier::TierTwo, + time : 180f64, energy : 72000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 4i64, + reagents : vec![("Constantan".into(), 5f64), ("Electrum".into(), + 5f64), ("Invar".into(), 10f64), ("Steel".into(), 50f64)] .into_iter() + .collect() }), ("ItemKitDoor".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 3f64), ("Iron" + .into(), 7f64)] .into_iter().collect() }), + ("ItemKitElectronicsPrinter".into(), Recipe { tier : + MachineTier::TierOne, time : 120f64, energy : 12000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold" + .into(), 2f64), ("Iron".into(), 20f64)] .into_iter().collect() }), + ("ItemKitFlagODA".into(), Recipe { tier : MachineTier::TierOne, time + : 5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 8f64)] .into_iter().collect() }), + ("ItemKitFurnace".into(), Recipe { tier : MachineTier::TierOne, time + : 120f64, energy : 12000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 10f64), ("Iron".into(), 30f64)] + .into_iter().collect() }), ("ItemKitFurniture".into(), Recipe { tier + : MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron" + .into(), 20f64)] .into_iter().collect() }), + ("ItemKitHydraulicPipeBender".into(), Recipe { tier : + MachineTier::TierOne, time : 180f64, energy : 18000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold" + .into(), 2f64), ("Iron".into(), 20f64)] .into_iter().collect() }), + ("ItemKitInteriorDoors".into(), Recipe { tier : MachineTier::TierOne, + time : 10f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 3f64), ("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemKitLadder".into(), Recipe { tier : + MachineTier::TierOne, time : 3f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 2f64)] + .into_iter().collect() }), ("ItemKitLocker".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemKitPipe".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 0.5f64)] + .into_iter().collect() }), ("ItemKitRailing".into(), Recipe { tier : + MachineTier::TierOne, time : 1f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 1f64)] + .into_iter().collect() }), ("ItemKitRecycler".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 12000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 10f64), ("Iron" + .into(), 20f64)] .into_iter().collect() }), + ("ItemKitReinforcedWindows".into(), Recipe { tier : + MachineTier::TierOne, time : 7f64, energy : 700f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Steel".into(), 2f64)] + .into_iter().collect() }), ("ItemKitRespawnPointWallMounted".into(), + Recipe { tier : MachineTier::TierOne, time : 20f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 1f64), ("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemKitRocketManufactory".into(), Recipe { tier : + MachineTier::TierOne, time : 120f64, energy : 12000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold" + .into(), 2f64), ("Iron".into(), 20f64)] .into_iter().collect() }), + ("ItemKitSDBHopper".into(), Recipe { tier : MachineTier::TierOne, + time : 10f64, energy : 700f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 15f64)] .into_iter().collect() }), + ("ItemKitSecurityPrinter".into(), Recipe { tier : + MachineTier::TierOne, time : 180f64, energy : 36000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold" + .into(), 20f64), ("Steel".into(), 20f64)] .into_iter().collect() }), + ("ItemKitSign".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemKitSorter".into(), Recipe { tier : MachineTier::TierOne, time : + 10f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 1f64), + ("Iron".into(), 10f64)] .into_iter().collect() }), ("ItemKitStacker" + .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 2f64), ("Iron".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitStairs".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 15f64)] + .into_iter().collect() }), ("ItemKitStairwell".into(), Recipe { tier + : MachineTier::TierOne, time : 20f64, energy : 6000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 15f64)] + .into_iter().collect() }), ("ItemKitStandardChute".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Constantan" + .into(), 2f64), ("Electrum".into(), 2f64), ("Iron".into(), 3f64)] + .into_iter().collect() }), ("ItemKitTables".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron" + .into(), 20f64)] .into_iter().collect() }), ("ItemKitToolManufactory" + .into(), Recipe { tier : MachineTier::TierOne, time : 120f64, energy + : 24000f64, temperature : RecipeRange { start : 1f64, stop : + 80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64, + stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix { + rule : 0i64, is_any : true, is_any_to_remove : false, reagents : + vec![] .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 10f64), ("Iron".into(), 20f64)] .into_iter() + .collect() }), ("ItemKitWall".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Steel".into(), 1f64)] + .into_iter().collect() }), ("ItemKitWallArch".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Steel".into(), 1f64)] + .into_iter().collect() }), ("ItemKitWallFlat".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Steel".into(), 1f64)] + .into_iter().collect() }), ("ItemKitWallGeometry".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Steel".into(), + 1f64)] .into_iter().collect() }), ("ItemKitWallIron".into(), Recipe { + tier : MachineTier::TierOne, time : 1f64, energy : 200f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 1f64)] .into_iter().collect() }), ("ItemKitWallPadded".into(), Recipe + { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Steel".into(), + 1f64)] .into_iter().collect() }), ("ItemKitWindowShutter".into(), + Recipe { tier : MachineTier::TierOne, time : 7f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Iron".into(), + 1f64), ("Steel".into(), 2f64)] .into_iter().collect() }), + ("ItemPlasticSheets".into(), Recipe { tier : MachineTier::TierOne, + time : 1f64, energy : 200f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Silicon".into(), 0.5f64)] .into_iter().collect() + }), ("ItemSpaceHelmet".into(), Recipe { tier : MachineTier::TierOne, + time : 15f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)] + .into_iter().collect() }), ("ItemSteelFrames".into(), Recipe { tier : + MachineTier::TierOne, time : 7f64, energy : 800f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Steel".into(), 2f64)] + .into_iter().collect() }), ("ItemSteelSheets".into(), Recipe { tier : + MachineTier::TierOne, time : 3f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Steel".into(), 0.5f64)] + .into_iter().collect() }), ("ItemStelliteGlassSheets".into(), Recipe + { tier : MachineTier::TierOne, time : 1f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Silicon".into(), + 2f64), ("Stellite".into(), 1f64)] .into_iter().collect() }), + ("ItemWallLight".into(), Recipe { tier : MachineTier::TierOne, time : + 10f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 1f64), + ("Silicon".into(), 1f64)] .into_iter().collect() }), ("KitSDBSilo" + .into(), Recipe { tier : MachineTier::TierOne, time : 120f64, energy + : 24000f64, temperature : RecipeRange { start : 1f64, stop : + 80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64, + stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix { + rule : 0i64, is_any : true, is_any_to_remove : false, reagents : + vec![] .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 10f64), ("Gold".into(), 20f64), ("Steel" + .into(), 15f64)] .into_iter().collect() }), + ("KitStructureCombustionCentrifuge".into(), Recipe { tier : + MachineTier::TierTwo, time : 120f64, energy : 24000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Constantan".into(), 5f64), + ("Invar".into(), 10f64), ("Steel".into(), 20f64)] .into_iter() + .collect() }) + ] + .into_iter() + .collect(), + }), + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ); + map.insert( + -1672404896i32, + StructureLogicDeviceConsumerMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAutomatedOven".into(), + prefab_hash: -1672404896i32, + desc: "".into(), + name: "Automated Oven".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RecipeHash, + MemoryAccess::ReadWrite), (LogicType::CompletionRatio, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemCorn".into(), "ItemEgg".into(), "ItemFertilizedEgg".into(), + "ItemFlour".into(), "ItemMilk".into(), "ItemMushroom".into(), + "ItemPotato".into(), "ItemPumpkin".into(), "ItemRice".into(), + "ItemSoybean".into(), "ItemSoyOil".into(), "ItemTomato".into(), + "ItemSugarCane".into(), "ItemCocoaTree".into(), "ItemCocoaPowder" + .into(), "ItemSugar".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: Some(FabricatorInfo { + tier: MachineTier::TierOne, + recipes: vec![ + ("ItemBreadLoaf".into(), Recipe { tier : MachineTier::TierOne, time : + 10f64, energy : 0f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Flour".into(), 200f64), ("Oil".into(), 5f64)] + .into_iter().collect() }), ("ItemCerealBar".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Flour".into(), 50f64)] + .into_iter().collect() }), ("ItemChocolateBar".into(), Recipe { tier + : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Cocoa".into(), 2f64), ("Sugar" + .into(), 10f64)] .into_iter().collect() }), ("ItemChocolateCake" + .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy : + 0f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 5i64, reagents : + vec![("Cocoa".into(), 2f64), ("Egg".into(), 1f64), ("Flour".into(), + 50f64), ("Milk".into(), 5f64), ("Sugar".into(), 50f64)] .into_iter() + .collect() }), ("ItemChocolateCerealBar".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Cocoa".into(), 1f64), ("Flour" + .into(), 50f64)] .into_iter().collect() }), + ("ItemCookedCondensedMilk".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Milk".into(), 100f64)] + .into_iter().collect() }), ("ItemCookedCorn".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Corn".into(), 1f64)] + .into_iter().collect() }), ("ItemCookedMushroom".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature + : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Mushroom".into(), 1f64)] + .into_iter().collect() }), ("ItemCookedPowderedEggs".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature + : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Egg".into(), 4f64)] + .into_iter().collect() }), ("ItemCookedPumpkin".into(), Recipe { tier + : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Pumpkin".into(), 1f64)] + .into_iter().collect() }), ("ItemCookedRice".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Rice".into(), 3f64)] + .into_iter().collect() }), ("ItemCookedSoybean".into(), Recipe { tier + : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Soy".into(), 5f64)] + .into_iter().collect() }), ("ItemCookedTomato".into(), Recipe { tier + : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Tomato".into(), 1f64)] + .into_iter().collect() }), ("ItemFries".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Oil".into(), 5f64), ("Potato" + .into(), 1f64)] .into_iter().collect() }), ("ItemMuffin".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Egg".into(), + 1f64), ("Flour".into(), 50f64), ("Milk".into(), 10f64)] .into_iter() + .collect() }), ("ItemPlainCake".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Egg".into(), 1f64), ("Flour" + .into(), 50f64), ("Milk".into(), 5f64), ("Sugar".into(), 50f64)] + .into_iter().collect() }), ("ItemPotatoBaked".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Potato".into(), 1f64)] + .into_iter().collect() }), ("ItemPumpkinPie".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 0f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Egg".into(), 1f64), ("Flour" + .into(), 100f64), ("Milk".into(), 10f64), ("Pumpkin".into(), 10f64)] + .into_iter().collect() }) + ] + .into_iter() + .collect(), + }), + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ); + map.insert( + 2099900163i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBackLiquidPressureRegulator".into(), + prefab_hash: 2099900163i32, + desc: "Regulates the volume ratio of liquid in the input Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty." + .into(), + name: "Liquid Back Volume Regulator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1149857558i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBackPressureRegulator".into(), + prefab_hash: -1149857558i32, + desc: "Unlike the Pressure Regulator, which closes when the input exceeds a given pressure, the back pressure regulator opens when input pressure reaches a given value." + .into(), + name: "Back Pressure Regulator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1613497288i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBasketHoop".into(), + prefab_hash: -1613497288i32, + desc: "".into(), + name: "Basket Hoop".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -400115994i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBattery".into(), + prefab_hash: -400115994i32, + desc: "Providing large-scale, reliable power storage, the Sinotai \'Dianzi\' station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: \'Dianzi cooks, but it also frys.\' \nPOWER OUTPUT\nAble to store up to 3600000W of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large)." + .into(), + name: "Station Battery".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, + MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PowerPotential, + MemoryAccess::Read), (LogicType::PowerActual, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1945930022i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatteryCharger".into(), + prefab_hash: 1945930022i32, + desc: "The 5-slot Xigo battery charger fits the Battery Cell (Small), Battery Cell (Large) and Battery Cell (Nuclear), providing up to 500W to any connected cell. Note: the older design means this device has minor power draw (10W) even when not charging." + .into(), + name: "Battery Cell Charger".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Battery".into(), typ : Class::Battery }, SlotInfo { name : + "Battery".into(), typ : Class::Battery }, SlotInfo { name : "Battery" + .into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), typ + : Class::Battery } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -761772413i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatteryChargerSmall".into(), + prefab_hash: -761772413i32, + desc: "".into(), + name: "Battery Charger Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Battery".into(), typ : Class::Battery } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1388288459i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatteryLarge".into(), + prefab_hash: -1388288459i32, + desc: "Providing even better large-scale, reliable power storage than the {THING;StructureBattery}, the Sinotai \'Da Dianchi\' large station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: \'Dianzi cooks, but it also frys.\' \nPOWER OUTPUT\nAble to store up to 9000001 watts of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large). " + .into(), + name: "Station Battery (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, + MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PowerPotential, + MemoryAccess::Read), (LogicType::PowerActual, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1125305264i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatteryMedium".into(), + prefab_hash: -1125305264i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Battery (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Charge, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2123455080i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatterySmall".into(), + prefab_hash: -2123455080i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Auxiliary Rocket Battery ".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Charge, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()), + (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -188177083i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBeacon".into(), + prefab_hash: -188177083i32, + desc: "".into(), + name: "Beacon".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2042448192i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench".into(), + prefab_hash: -2042448192i32, + desc: "When it\'s time to sit, nothing supports you like a bench. This bench is powered, so you can use appliances like the Microwave." + .into(), + name: "Powered Bench".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 406745009i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench1".into(), + prefab_hash: 406745009i32, + desc: "".into(), + name: "Bench (Counter Style)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2127086069i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench2".into(), + prefab_hash: -2127086069i32, + desc: "".into(), + name: "Bench (High Tech Style)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -164622691i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench3".into(), + prefab_hash: -164622691i32, + desc: "".into(), + name: "Bench (Frame Style)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1750375230i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench4".into(), + prefab_hash: 1750375230i32, + desc: "".into(), + name: "Bench (Workbench Style)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 337416191i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBlastDoor".into(), + prefab_hash: 337416191i32, + desc: "Airtight and almost undamageable, the original \'Millmar\' series of blast door was designed by off-world mining giant Recurso to protect asteroid-mining facilities from nuclear-incident-level explosive decompression.\nShort of a pocket-sized singularity blinking into the local space-time frame, there is effectively no limit to the pressure these blast doors can contain - ideal for constructing airlocks in pressure-sensitive environments." + .into(), + name: "Blast Door".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 697908419i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBlockBed".into(), + prefab_hash: 697908419i32, + desc: "Description coming.".into(), + name: "Block Bed".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 378084505i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBlocker".into(), + prefab_hash: 378084505i32, + desc: "".into(), + name: "Blocker".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1036015121i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableAnalysizer".into(), + prefab_hash: 1036015121i32, + desc: "".into(), + name: "Cable Analyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), + (LogicType::PowerRequired, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -889269388i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner".into(), + prefab_hash: -889269388i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 980469101i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner3".into(), + prefab_hash: 980469101i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (3-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 318437449i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner3Burnt".into(), + prefab_hash: 318437449i32, + desc: "".into(), + name: "Burnt Cable (3-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2393826i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner3HBurnt".into(), + prefab_hash: 2393826i32, + desc: "".into(), + name: "".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1542172466i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner4".into(), + prefab_hash: -1542172466i32, + desc: "".into(), + name: "Cable (4-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 268421361i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner4Burnt".into(), + prefab_hash: 268421361i32, + desc: "".into(), + name: "Burnt Cable (4-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -981223316i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner4HBurnt".into(), + prefab_hash: -981223316i32, + desc: "".into(), + name: "Burnt Heavy Cable (4-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -177220914i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerBurnt".into(), + prefab_hash: -177220914i32, + desc: "".into(), + name: "Burnt Cable (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -39359015i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerH".into(), + prefab_hash: -39359015i32, + desc: "".into(), + name: "Heavy Cable (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1843379322i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerH3".into(), + prefab_hash: -1843379322i32, + desc: "".into(), + name: "Heavy Cable (3-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 205837861i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerH4".into(), + prefab_hash: 205837861i32, + desc: "".into(), + name: "Heavy Cable (4-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1931412811i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerHBurnt".into(), + prefab_hash: 1931412811i32, + desc: "".into(), + name: "Burnt Cable (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 281380789i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableFuse100k".into(), + prefab_hash: 281380789i32, + desc: "".into(), + name: "Fuse (100kW)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1103727120i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableFuse1k".into(), + prefab_hash: -1103727120i32, + desc: "".into(), + name: "Fuse (1kW)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -349716617i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableFuse50k".into(), + prefab_hash: -349716617i32, + desc: "".into(), + name: "Fuse (50kW)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -631590668i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableFuse5k".into(), + prefab_hash: -631590668i32, + desc: "".into(), + name: "Fuse (5kW)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -175342021i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction".into(), + prefab_hash: -175342021i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1112047202i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction4".into(), + prefab_hash: 1112047202i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1756896811i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction4Burnt".into(), + prefab_hash: -1756896811i32, + desc: "".into(), + name: "Burnt Cable (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -115809132i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction4HBurnt".into(), + prefab_hash: -115809132i32, + desc: "".into(), + name: "Burnt Cable (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 894390004i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction5".into(), + prefab_hash: 894390004i32, + desc: "".into(), + name: "Cable (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1545286256i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction5Burnt".into(), + prefab_hash: 1545286256i32, + desc: "".into(), + name: "Burnt Cable (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1404690610i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction6".into(), + prefab_hash: -1404690610i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer duty - so much so, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -628145954i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction6Burnt".into(), + prefab_hash: -628145954i32, + desc: "".into(), + name: "Burnt Cable (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1854404029i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction6HBurnt".into(), + prefab_hash: 1854404029i32, + desc: "".into(), + name: "Burnt Cable (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1620686196i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionBurnt".into(), + prefab_hash: -1620686196i32, + desc: "".into(), + name: "Burnt Cable (Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 469451637i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH".into(), + prefab_hash: 469451637i32, + desc: "".into(), + name: "Heavy Cable (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -742234680i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH4".into(), + prefab_hash: -742234680i32, + desc: "".into(), + name: "Heavy Cable (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1530571426i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH5".into(), + prefab_hash: -1530571426i32, + desc: "".into(), + name: "Heavy Cable (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1701593300i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH5Burnt".into(), + prefab_hash: 1701593300i32, + desc: "".into(), + name: "Burnt Heavy Cable (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1036780772i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH6".into(), + prefab_hash: 1036780772i32, + desc: "".into(), + name: "Heavy Cable (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -341365649i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionHBurnt".into(), + prefab_hash: -341365649i32, + desc: "".into(), + name: "Burnt Cable (Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 605357050i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableStraight".into(), + prefab_hash: 605357050i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official \'tool\'.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1196981113i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableStraightBurnt".into(), + prefab_hash: -1196981113i32, + desc: "".into(), + name: "Burnt Cable (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -146200530i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableStraightH".into(), + prefab_hash: -146200530i32, + desc: "".into(), + name: "Heavy Cable (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2085762089i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableStraightHBurnt".into(), + prefab_hash: 2085762089i32, + desc: "".into(), + name: "Burnt Cable (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -342072665i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCamera".into(), + prefab_hash: -342072665i32, + desc: "Nothing says \'I care\' like a security camera that\'s been linked a Motion Sensor and a Console fitted with a Camera Display.\nBe there, even when you\'re not." + .into(), + name: "Camera".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1385712131i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCapsuleTankGas".into(), + prefab_hash: -1385712131i32, + desc: "".into(), + name: "Gas Capsule Tank Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1415396263i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCapsuleTankLiquid".into(), + prefab_hash: 1415396263i32, + desc: "".into(), + name: "Liquid Capsule Tank Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1151864003i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCargoStorageMedium".into(), + prefab_hash: 1151864003i32, + desc: "".into(), + name: "Cargo Storage (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![] + .into_iter().collect()), (4u32, vec![] .into_iter().collect()), + (5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter() + .collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![] + .into_iter().collect()), (9u32, vec![] .into_iter().collect()), + (10u32, vec![] .into_iter().collect()), (11u32, vec![] .into_iter() + .collect()), (12u32, vec![] .into_iter().collect()), (13u32, vec![] + .into_iter().collect()), (14u32, vec![] .into_iter().collect()), + (15u32, vec![] .into_iter().collect()), (16u32, vec![] .into_iter() + .collect()), (17u32, vec![] .into_iter().collect()), (18u32, vec![] + .into_iter().collect()), (19u32, vec![] .into_iter().collect()), + (20u32, vec![] .into_iter().collect()), (21u32, vec![] .into_iter() + .collect()), (22u32, vec![] .into_iter().collect()), (23u32, vec![] + .into_iter().collect()), (24u32, vec![] .into_iter().collect()), + (25u32, vec![] .into_iter().collect()), (26u32, vec![] .into_iter() + .collect()), (27u32, vec![] .into_iter().collect()), (28u32, vec![] + .into_iter().collect()), (29u32, vec![] .into_iter().collect()), + (30u32, vec![] .into_iter().collect()), (31u32, vec![] .into_iter() + .collect()), (32u32, vec![] .into_iter().collect()), (33u32, vec![] + .into_iter().collect()), (34u32, vec![] .into_iter().collect()), + (35u32, vec![] .into_iter().collect()), (36u32, vec![] .into_iter() + .collect()), (37u32, vec![] .into_iter().collect()), (38u32, vec![] + .into_iter().collect()), (39u32, vec![] .into_iter().collect()), + (40u32, vec![] .into_iter().collect()), (41u32, vec![] .into_iter() + .collect()), (42u32, vec![] .into_iter().collect()), (43u32, vec![] + .into_iter().collect()), (44u32, vec![] .into_iter().collect()), + (45u32, vec![] .into_iter().collect()), (46u32, vec![] .into_iter() + .collect()), (47u32, vec![] .into_iter().collect()), (48u32, vec![] + .into_iter().collect()), (49u32, vec![] .into_iter().collect()), + (50u32, vec![] .into_iter().collect()), (51u32, vec![] .into_iter() + .collect()), (52u32, vec![] .into_iter().collect()), (53u32, vec![] + .into_iter().collect()), (54u32, vec![] .into_iter().collect()), + (55u32, vec![] .into_iter().collect()), (56u32, vec![] .into_iter() + .collect()), (57u32, vec![] .into_iter().collect()), (58u32, vec![] + .into_iter().collect()), (59u32, vec![] .into_iter().collect()), + (60u32, vec![] .into_iter().collect()), (61u32, vec![] .into_iter() + .collect()), (62u32, vec![] .into_iter().collect()), (63u32, vec![] + .into_iter().collect()), (64u32, vec![] .into_iter().collect()), + (65u32, vec![] .into_iter().collect()), (66u32, vec![] .into_iter() + .collect()), (67u32, vec![] .into_iter().collect()), (68u32, vec![] + .into_iter().collect()), (69u32, vec![] .into_iter().collect()), + (70u32, vec![] .into_iter().collect()), (71u32, vec![] .into_iter() + .collect()), (72u32, vec![] .into_iter().collect()), (73u32, vec![] + .into_iter().collect()), (74u32, vec![] .into_iter().collect()), + (75u32, vec![] .into_iter().collect()), (76u32, vec![] .into_iter() + .collect()), (77u32, vec![] .into_iter().collect()), (78u32, vec![] + .into_iter().collect()), (79u32, vec![] .into_iter().collect()), + (80u32, vec![] .into_iter().collect()), (81u32, vec![] .into_iter() + .collect()), (82u32, vec![] .into_iter().collect()), (83u32, vec![] + .into_iter().collect()), (84u32, vec![] .into_iter().collect()), + (85u32, vec![] .into_iter().collect()), (86u32, vec![] .into_iter() + .collect()), (87u32, vec![] .into_iter().collect()), (88u32, vec![] + .into_iter().collect()), (89u32, vec![] .into_iter().collect()), + (90u32, vec![] .into_iter().collect()), (91u32, vec![] .into_iter() + .collect()), (92u32, vec![] .into_iter().collect()), (93u32, vec![] + .into_iter().collect()), (94u32, vec![] .into_iter().collect()), + (95u32, vec![] .into_iter().collect()), (96u32, vec![] .into_iter() + .collect()), (97u32, vec![] .into_iter().collect()), (98u32, vec![] + .into_iter().collect()), (99u32, vec![] .into_iter().collect()), + (100u32, vec![] .into_iter().collect()), (101u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None }, SlotInfo { name : "Storage".into(), + typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1493672123i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCargoStorageSmall".into(), + prefab_hash: -1493672123i32, + desc: "".into(), + name: "Cargo Storage (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (15u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (16u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (17u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (18u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (19u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (20u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (21u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (22u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (23u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (24u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (25u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (26u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (27u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (28u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (29u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (30u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (31u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (32u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (33u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (34u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (35u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (36u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (37u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (38u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (39u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (40u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (41u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (42u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (43u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (44u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (45u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (46u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (47u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (48u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (49u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (50u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (51u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None }, SlotInfo { name : "Storage".into(), + typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 690945935i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCentrifuge".into(), + prefab_hash: 690945935i32, + desc: "If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore. \n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. \n Its bigger brother Combustion Centrifuge can be used to process items significantly faster. Items processed by the centrifuge will be de-gassed. \n If openned while powered on, the centrifuge will enter an errored state and reduce its rpm to 0 and then export any items." + .into(), + name: "Centrifuge".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Reagents, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + } + .into(), + ); + map.insert( + 1167659360i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChair".into(), + prefab_hash: 1167659360i32, + desc: "One of the universe\'s many chairs, optimized for bipeds with somewhere between zero and two upper limbs." + .into(), + name: "Chair".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1944858936i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairBacklessDouble".into(), + prefab_hash: 1944858936i32, + desc: "".into(), + name: "Chair (Backless Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1672275150i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairBacklessSingle".into(), + prefab_hash: 1672275150i32, + desc: "".into(), + name: "Chair (Backless Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -367720198i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairBoothCornerLeft".into(), + prefab_hash: -367720198i32, + desc: "".into(), + name: "Chair (Booth Corner Left)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1640720378i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairBoothMiddle".into(), + prefab_hash: 1640720378i32, + desc: "".into(), + name: "Chair (Booth Middle)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1152812099i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairRectangleDouble".into(), + prefab_hash: -1152812099i32, + desc: "".into(), + name: "Chair (Rectangle Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1425428917i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairRectangleSingle".into(), + prefab_hash: -1425428917i32, + desc: "".into(), + name: "Chair (Rectangle Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1245724402i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairThickDouble".into(), + prefab_hash: -1245724402i32, + desc: "".into(), + name: "Chair (Thick Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1510009608i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairThickSingle".into(), + prefab_hash: -1510009608i32, + desc: "".into(), + name: "Chair (Thick Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -850484480i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteBin".into(), + prefab_hash: -850484480i32, + desc: "The Stationeer\'s goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nLike most Recurso-designed systems, chute bins are simple and robust powered items, allowing items to be manually passed into chute networks by pulling a lever. They can also be programmed with logic to operate automatically, although full automation requires the use items such as a SDB Hopper." + .into(), + name: "Chute Bin".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Input".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1360330136i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteCorner".into(), + prefab_hash: 1360330136i32, + desc: "Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute corners are fundamental components of chute networks, which allow the transport of items between machines with import/export slots, such as the Furnace and other automatable structures." + .into(), + name: "Chute (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -810874728i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteDigitalFlipFlopSplitterLeft".into(), + prefab_hash: -810874728i32, + desc: "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output." + .into(), + name: "Chute Digital Flip Flop Splitter Left".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SettingOutput, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output2 }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 163728359i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteDigitalFlipFlopSplitterRight".into(), + prefab_hash: 163728359i32, + desc: "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output." + .into(), + name: "Chute Digital Flip Flop Splitter Right".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SettingOutput, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output2 }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 648608238i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteDigitalValveLeft".into(), + prefab_hash: 648608238i32, + desc: "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial." + .into(), + name: "Chute Digital Valve Left".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1337091041i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteDigitalValveRight".into(), + prefab_hash: -1337091041i32, + desc: "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial." + .into(), + name: "Chute Digital Valve Right".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1446854725i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteFlipFlopSplitter".into(), + prefab_hash: -1446854725i32, + desc: "A chute that toggles between two outputs".into(), + name: "Chute Flip Flop Splitter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1469588766i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteInlet".into(), + prefab_hash: -1469588766i32, + desc: "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute inlet is an aperture by which items can be introduced to import/export networks. Note that its origins in zero-gravity mining means chute inlets are unpowered and permanently open, rather than interactable, allowing objects to be thrown in. They can be connected to logic systems to monitor throughput." + .into(), + name: "Chute Inlet".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -611232514i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteJunction".into(), + prefab_hash: -611232514i32, + desc: "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute junctions are fundamental components of chute networks, allowing merging or splitting of these networks. When combined with a programmed Sorter, items can be sent down different paths to various machines with import/export slots." + .into(), + name: "Chute (Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1022714809i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteOutlet".into(), + prefab_hash: -1022714809i32, + desc: "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute outlet is an aperture for exiting items from import/export networks. Note that the outlet\'s origins in zero-gravity mining means they are permanently open, rather than interactable, but can be connected to logic systems to monitor throughput." + .into(), + name: "Chute Outlet".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 225377225i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteOverflow".into(), + prefab_hash: 225377225i32, + desc: "The overflow chute will direct materials to its overflow port when the thing connected to its default port is already occupied." + .into(), + name: "Chute Overflow".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 168307007i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteStraight".into(), + prefab_hash: 168307007i32, + desc: "Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChutes are fundamental components of chute networks, which allow the transport of items between any machine or device with an import/export slot." + .into(), + name: "Chute (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1918892177i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteUmbilicalFemale".into(), + prefab_hash: -1918892177i32, + desc: "".into(), + name: "Umbilical Socket (Chute)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -659093969i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteUmbilicalFemaleSide".into(), + prefab_hash: -659093969i32, + desc: "".into(), + name: "Umbilical Socket Angle (Chute)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -958884053i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteUmbilicalMale".into(), + prefab_hash: -958884053i32, + desc: "0.Left\n1.Center\n2.Right".into(), + name: "Umbilical (Chute)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 434875271i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteValve".into(), + prefab_hash: 434875271i32, + desc: "The Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute." + .into(), + name: "Chute Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -607241919i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteWindow".into(), + prefab_hash: -607241919i32, + desc: "Chute\'s with windows let you see what\'s passing through your import/export network. But be warned, they are not insulated as other chutes are. Ices will melt." + .into(), + name: "Chute (Window)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -128473777i32, + StructureCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCircuitHousing".into(), + prefab_hash: -128473777i32, + desc: "".into(), + name: "IC Housing".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::LineNumber, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::LineNumber, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(6u32), + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1238905683i32, + StructureCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCombustionCentrifuge".into(), + prefab_hash: 1238905683i32, + desc: "The Combustion Centrifuge is a gas powered version of the Centrifuge. If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore.\n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. A combustible fuel mix should be supplied to the gas input, and waste gasses should be vented from the output. \n The machine\'s RPMs must be controlled via the throttle and combustion limiter levers. If the Combustion Centrifuge gains, or loses, RPMs too fast it will experience stress, and eventually grind to a halt. Higher RPMs directly result in faster processing speeds. \n The throttle lever controls the amount of fuel being pulled into the machine, increasing the temperature inside the engine, and leading to an increase in RPM. The limiter lever influences the speed of the combustion, and how much uncombusted gas is in the exhaust. \n Ejecting ore from the Combustion Centrifuge while it is at high RPMs will result in additional stress build up. If turned off while not stressed, the machine will automatically start to brake, and reduce RPMs in a controlled manner.\n\t " + .into(), + name: "Combustion Centrifuge".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.001f32, + radiation_factor: 0.001f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Reagents, MemoryAccess::Read), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::CombustionLimiter, MemoryAccess::ReadWrite), + (LogicType::Throttle, MemoryAccess::ReadWrite), (LogicType::Rpm, + MemoryAccess::Read), (LogicType::Stress, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None }, SlotInfo { name : + "Programmable Chip".into(), typ : Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + } + .into(), + ); + map.insert( + -1513030150i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngled".into(), + prefab_hash: -1513030150i32, + desc: "".into(), + name: "Composite Cladding (Angled)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -69685069i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCorner".into(), + prefab_hash: -69685069i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1841871763i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerInner".into(), + prefab_hash: -1841871763i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner Inner)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1417912632i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerInnerLong".into(), + prefab_hash: -1417912632i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner Inner Long)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 947705066i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerInnerLongL".into(), + prefab_hash: 947705066i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner Inner Long L)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1032590967i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerInnerLongR".into(), + prefab_hash: -1032590967i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner Inner Long R)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 850558385i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerLong".into(), + prefab_hash: 850558385i32, + desc: "".into(), + name: "Composite Cladding (Long Angled Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -348918222i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerLongR".into(), + prefab_hash: -348918222i32, + desc: "".into(), + name: "Composite Cladding (Long Angled Mirrored Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -387546514i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledLong".into(), + prefab_hash: -387546514i32, + desc: "".into(), + name: "Composite Cladding (Long Angled)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 212919006i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingCylindrical".into(), + prefab_hash: 212919006i32, + desc: "".into(), + name: "Composite Cladding (Cylindrical)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1077151132i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingCylindricalPanel".into(), + prefab_hash: 1077151132i32, + desc: "".into(), + name: "Composite Cladding (Cylindrical Panel)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1997436771i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingPanel".into(), + prefab_hash: 1997436771i32, + desc: "".into(), + name: "Composite Cladding (Panel)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -259357734i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingRounded".into(), + prefab_hash: -259357734i32, + desc: "".into(), + name: "Composite Cladding (Rounded)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1951525046i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingRoundedCorner".into(), + prefab_hash: 1951525046i32, + desc: "".into(), + name: "Composite Cladding (Rounded Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 110184667i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingRoundedCornerInner".into(), + prefab_hash: 110184667i32, + desc: "".into(), + name: "Composite Cladding (Rounded Corner Inner)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 139107321i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingSpherical".into(), + prefab_hash: 139107321i32, + desc: "".into(), + name: "Composite Cladding (Spherical)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 534213209i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingSphericalCap".into(), + prefab_hash: 534213209i32, + desc: "".into(), + name: "Composite Cladding (Spherical Cap)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1751355139i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingSphericalCorner".into(), + prefab_hash: 1751355139i32, + desc: "".into(), + name: "Composite Cladding (Spherical Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -793837322i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeDoor".into(), + prefab_hash: -793837322i32, + desc: "Recurso\'s composite doors are rated to 300kPa, which is more than sufficient for most purposes they were designed for. However, steep pressure differentials are not your friend." + .into(), + name: "Composite Door".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 324868581i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGrating".into(), + prefab_hash: 324868581i32, + desc: "While aesthetics rank low on the ladder of Stationeer concerns, composite gratings allow the concealment of unsightly cables on floors, walls and ceilings." + .into(), + name: "Composite Floor Grating".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -895027741i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGrating2".into(), + prefab_hash: -895027741i32, + desc: "".into(), + name: "Composite Floor Grating (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1113471627i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGrating3".into(), + prefab_hash: -1113471627i32, + desc: "".into(), + name: "Composite Floor Grating (Type 3)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 600133846i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGrating4".into(), + prefab_hash: 600133846i32, + desc: "".into(), + name: "Composite Floor Grating (Type 4)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2109695912i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGratingOpen".into(), + prefab_hash: 2109695912i32, + desc: "".into(), + name: "Composite Floor Grating Open".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 882307910i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGratingOpenRotated".into(), + prefab_hash: 882307910i32, + desc: "".into(), + name: "Composite Floor Grating Open Rotated".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1237302061i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWall".into(), + prefab_hash: 1237302061i32, + desc: "Air-tight and resistant to extreme temperatures, composite walls favor form over function, coming in a range of slightly different, functionally identical varieties." + .into(), + name: "Composite Wall (Type 1)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 718343384i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWall02".into(), + prefab_hash: 718343384i32, + desc: "".into(), + name: "Composite Wall (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1574321230i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWall03".into(), + prefab_hash: 1574321230i32, + desc: "".into(), + name: "Composite Wall (Type 3)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1011701267i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWall04".into(), + prefab_hash: -1011701267i32, + desc: "".into(), + name: "Composite Wall (Type 4)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2060571986i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWindow".into(), + prefab_hash: -2060571986i32, + desc: "Air-tight and resistant to extreme temperatures, composite walls come in several charming, near identical varieties - reflecting their designer\'s focus on form over function." + .into(), + name: "Composite Window".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -688284639i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWindowIron".into(), + prefab_hash: -688284639i32, + desc: "".into(), + name: "Iron Window".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -626563514i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureComputer".into(), + prefab_hash: -626563514i32, + desc: "In some ways a relic, the \'Chonk R1\' was designed by severely conflicted Norsec technicians, who needed a unit that could operate with a wide range of motherboards, while also enduring the worst a new Cadet could throw at it.\nThe result is a machine described by some as \'the only PC likely to survive our collision with a black hole\', while other, less appreciative users regard it as sharing most of its technological DNA with a cheese grater.\nCompatible motherboards:\n- Logic Motherboard\n- Manufacturing Motherboard\n- Sorter Motherboard\n- Communications Motherboard\n- IC Editor Motherboard" + .into(), + name: "Computer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk }, SlotInfo { + name : "Data Disk".into(), typ : Class::DataDisk }, SlotInfo { name : + "Motherboard".into(), typ : Class::Motherboard } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1420719315i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCondensationChamber".into(), + prefab_hash: 1420719315i32, + desc: "A device for safely condensing gasses into liquids. Liquids and Gasses will both exist safely inside the device. The Chamber will pressurise using its in-built pressure regulator to the target set by the setting wheel.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Condensation Chamber.\n Paired with Evaporation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner." + .into(), + name: "Condensation Chamber".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.001f32, + radiation_factor: 0.000050000002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input2 }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::PipeLiquid, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -965741795i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCondensationValve".into(), + prefab_hash: -965741795i32, + desc: "Allows for the removal of any liquids from a gas pipe into a liquid pipe. Only allows liquids to pass in one direction." + .into(), + name: "Condensation Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 235638270i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsole".into(), + prefab_hash: 235638270i32, + desc: "This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed." + .into(), + name: "Console".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard }, + SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -722284333i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleDual".into(), + prefab_hash: -722284333i32, + desc: "This Norsec-designed control box manages devices such as the Active Vent, Gas Sensor, Composite Door and others, depending on which circuitboard is inserted into the unit. It has separate data and power ports.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed." + .into(), + name: "Console Dual".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard }, + SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -53151617i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleLED1x2".into(), + prefab_hash: -53151617i32, + desc: "0.Default\n1.Percent\n2.Power".into(), + name: "LED Display (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, + "Power".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1949054743i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleLED1x3".into(), + prefab_hash: -1949054743i32, + desc: "0.Default\n1.Percent\n2.Power".into(), + name: "LED Display (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, + "Power".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -815193061i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleLED5".into(), + prefab_hash: -815193061i32, + desc: "0.Default\n1.Percent\n2.Power".into(), + name: "LED Display (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, + "Power".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 801677497i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleMonitor".into(), + prefab_hash: 801677497i32, + desc: "This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor, Security Camera and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port, and a charming sloped interface.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed." + .into(), + name: "Console Monitor".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard }, + SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1961153710i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureControlChair".into(), + prefab_hash: -1961153710i32, + desc: "Once, these chairs were the heart of space-going behemoths. Now, they\'re items of nostalgia built only by a handful of Stationeers with a sense of history. In other words, kitsch." + .into(), + name: "Control Chair".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::PositionX, MemoryAccess::Read), (LogicType::PositionY, + MemoryAccess::Read), (LogicType::PositionZ, MemoryAccess::Read), + (LogicType::VelocityMagnitude, MemoryAccess::Read), + (LogicType::VelocityRelativeX, MemoryAccess::Read), + (LogicType::VelocityRelativeY, MemoryAccess::Read), + (LogicType::VelocityRelativeZ, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Entity".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1968255729i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCornerLocker".into(), + prefab_hash: -1968255729i32, + desc: "".into(), + name: "Corner Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -733500083i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCrateMount".into(), + prefab_hash: -733500083i32, + desc: "".into(), + name: "Container Mount".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Container Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1938254586i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCryoTube".into(), + prefab_hash: 1938254586i32, + desc: "The exact operation of the Longsleep cryotube remains a commercial secret, with Norsec merely licensing the design. Able to regenerate organ damage when supplied with power and an atmosphere, the Longsleep is a minor miracle of modern medical technology." + .into(), + name: "CryoTube".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1443059329i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCryoTubeHorizontal".into(), + prefab_hash: 1443059329i32, + desc: "The horizontal variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C." + .into(), + name: "Cryo Tube Horizontal".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.005f32, + radiation_factor: 0.005f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1381321828i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCryoTubeVertical".into(), + prefab_hash: -1381321828i32, + desc: "The vertical variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C." + .into(), + name: "Cryo Tube Vertical".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.005f32, + radiation_factor: 0.005f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1076425094i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDaylightSensor".into(), + prefab_hash: 1076425094i32, + desc: "Daylight sensors provide data on whether the current region of your base is in sunlight, and report the exact solar angle. Note that the orientation of the sensor alters the reported solar angle, while Logic systems can be used to offset it." + .into(), + name: "Daylight Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Horizontal, + MemoryAccess::Read), (LogicType::Vertical, MemoryAccess::Read), + (LogicType::SolarAngle, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::SolarIrradiance, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Default".into()), (1u32, "Horizontal".into()), (2u32, + "Vertical".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 265720906i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDeepMiner".into(), + prefab_hash: 265720906i32, + desc: "Drills through terrain until it hits bedrock. Once inside bedrock Dirty Ore is produced roughly every 90s" + .into(), + name: "Deep Miner".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, ConnectionInfo { + typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1280984102i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDigitalValve".into(), + prefab_hash: -1280984102i32, + desc: "The digital valve allows Stationeers to create logic-controlled valves and pipe networks." + .into(), + name: "Digital Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1944485013i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDiode".into(), + prefab_hash: 1944485013i32, + desc: "".into(), + name: "LED".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Color, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 576516101i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDiodeSlide".into(), + prefab_hash: 576516101i32, + desc: "".into(), + name: "Diode Slide".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -137465079i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDockPortSide".into(), + prefab_hash: -137465079i32, + desc: "".into(), + name: "Dock (Port Side)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1968371847i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDrinkingFountain".into(), + prefab_hash: 1968371847i32, + desc: "".into(), + name: "".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1668992663i32, + StructureCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElectrolyzer".into(), + prefab_hash: -1668992663i32, + desc: "The Norsec-designed Electrolyzer splits Water into hydrogen and Oxygen. Employing unknown proprietary technology, the device uses water\'s latent heat as the energy to drive the electrosis process. If there is a downside to this near-miraculous fission, it\'s that the device is limited by the quantity of power available, which is used to maintain the temperature output. In other words, the machine works best with hot gas." + .into(), + name: "Electrolyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1307165496i32, + StructureLogicDeviceConsumerMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElectronicsPrinter".into(), + prefab_hash: 1307165496i32, + desc: "The electronic printer will create any electronic part you need. From circuit boards and electronic devices to solar panels. The choice is yours. Upgrade the device using a Electronic Printer Mod for additional recipes and faster processing speeds." + .into(), + name: "Electronics Printer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RecipeHash, + MemoryAccess::ReadWrite), (LogicType::CompletionRatio, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name + : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), + "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" + .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), + "ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot" + .into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(), + "ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel" + .into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(), + "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: Some(FabricatorInfo { + tier: MachineTier::Undefined, + recipes: vec![ + ("ApplianceChemistryStation".into(), Recipe { tier : + MachineTier::TierOne, time : 45f64, energy : 1500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 1f64), ("Steel".into(), 5f64)] .into_iter().collect() }), + ("ApplianceDeskLampLeft".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Iron".into(), 2f64), ("Silicon" + .into(), 1f64)] .into_iter().collect() }), ("ApplianceDeskLampRight" + .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : vec![("Iron" + .into(), 2f64), ("Silicon".into(), 1f64)] .into_iter().collect() }), + ("ApplianceMicrowave".into(), Recipe { tier : MachineTier::TierOne, + time : 45f64, energy : 1500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 1f64), + ("Iron".into(), 5f64)] .into_iter().collect() }), + ("AppliancePackagingMachine".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 1f64), ("Iron".into(), 10f64)] .into_iter().collect() }), + ("AppliancePaintMixer".into(), Recipe { tier : MachineTier::TierOne, + time : 45f64, energy : 1500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 1f64), + ("Steel".into(), 5f64)] .into_iter().collect() }), + ("AppliancePlantGeneticAnalyzer".into(), Recipe { tier : + MachineTier::TierOne, time : 45f64, energy : 4500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 1f64), ("Steel".into(), 5f64)] .into_iter().collect() }), + ("AppliancePlantGeneticSplicer".into(), Recipe { tier : + MachineTier::TierOne, time : 50f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Inconel".into(), 10f64), + ("Stellite".into(), 20f64)] .into_iter().collect() }), + ("AppliancePlantGeneticStabilizer".into(), Recipe { tier : + MachineTier::TierOne, time : 50f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Inconel".into(), 10f64), + ("Stellite".into(), 20f64)] .into_iter().collect() }), + ("ApplianceReagentProcessor".into(), Recipe { tier : + MachineTier::TierOne, time : 45f64, energy : 1500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 1f64), ("Iron".into(), 5f64)] .into_iter().collect() }), + ("ApplianceTabletDock".into(), Recipe { tier : MachineTier::TierOne, + time : 30f64, energy : 750f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 4i64, + reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 1f64), + ("Iron".into(), 5f64), ("Silicon".into(), 1f64)] .into_iter() + .collect() }), ("AutolathePrinterMod".into(), Recipe { tier : + MachineTier::TierTwo, time : 180f64, energy : 72000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Constantan".into(), 8f64), + ("Electrum".into(), 8f64), ("Solder".into(), 8f64), ("Steel".into(), + 35f64)] .into_iter().collect() }), ("Battery_Wireless_cell".into(), + Recipe { tier : MachineTier::TierOne, time : 10f64, energy : + 10000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 10f64), ("Gold".into(), 2f64), ("Iron".into(), + 2f64)] .into_iter().collect() }), ("Battery_Wireless_cell_Big" + .into(), Recipe { tier : MachineTier::TierOne, time : 20f64, energy : + 20000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 15f64), ("Gold".into(), 5f64), ("Steel" + .into(), 5f64)] .into_iter().collect() }), ("CartridgeAtmosAnalyser" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron".into(), + 1f64)] .into_iter().collect() }), ("CartridgeConfiguration".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 5f64), ("Gold".into(), 5f64), ("Iron".into(), 1f64)] .into_iter() + .collect() }), ("CartridgeElectronicReader".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("CartridgeGPS".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), + ("Iron".into(), 1f64)] .into_iter().collect() }), + ("CartridgeMedicalAnalyser".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("CartridgeNetworkAnalyser".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("CartridgeOreScanner".into(), Recipe { tier : MachineTier::TierOne, + time : 5f64, energy : 100f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), + ("Iron".into(), 1f64)] .into_iter().collect() }), + ("CartridgeOreScannerColor".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Constantan".into(), 5f64), + ("Electrum".into(), 5f64), ("Invar".into(), 5f64), ("Silicon".into(), + 5f64)] .into_iter().collect() }), ("CartridgePlantAnalyser".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 5f64), ("Gold".into(), 5f64), ("Iron".into(), 1f64)] .into_iter() + .collect() }), ("CartridgeTracker".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("CircuitboardAdvAirlockControl".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("CircuitboardAirControl".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64)] .into_iter().collect() }), + ("CircuitboardAirlockControl".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("CircuitboardDoorControl".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64)] .into_iter().collect() }), ("CircuitboardGasDisplay" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron".into(), + 1f64)] .into_iter().collect() }), ("CircuitboardGraphDisplay".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 5f64), ("Gold".into(), 5f64)] .into_iter().collect() }), + ("CircuitboardHashDisplay".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64)] .into_iter().collect() }), ("CircuitboardModeControl" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() + .collect() }), ("CircuitboardPowerControl".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64)] .into_iter().collect() }), ("CircuitboardShipDisplay" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter() + .collect() }), ("CircuitboardSolarControl".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64)] .into_iter().collect() }), ("DynamicLight".into(), + Recipe { tier : MachineTier::TierOne, time : 20f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }), + ("ElectronicPrinterMod".into(), Recipe { tier : MachineTier::TierOne, + time : 180f64, energy : 72000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 4i64, + reagents : vec![("Constantan".into(), 8f64), ("Electrum".into(), + 8f64), ("Solder".into(), 8f64), ("Steel".into(), 35f64)] .into_iter() + .collect() }), ("ItemAdvancedTablet".into(), Recipe { tier : + MachineTier::TierTwo, time : 60f64, energy : 12000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 6i64, reagents : vec![("Copper".into(), 5.5f64), + ("Electrum".into(), 1f64), ("Gold".into(), 12f64), ("Iron".into(), + 3f64), ("Solder".into(), 5f64), ("Steel".into(), 2f64)] .into_iter() + .collect() }), ("ItemAreaPowerControl".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Iron" + .into(), 5f64), ("Solder".into(), 3f64)] .into_iter().collect() }), + ("ItemBatteryCell".into(), Recipe { tier : MachineTier::TierOne, time + : 10f64, energy : 1000f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 2f64), + ("Iron".into(), 2f64)] .into_iter().collect() }), + ("ItemBatteryCellLarge".into(), Recipe { tier : MachineTier::TierOne, + time : 20f64, energy : 20000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 10f64), ("Gold".into(), 5f64), + ("Steel".into(), 5f64)] .into_iter().collect() }), + ("ItemBatteryCellNuclear".into(), Recipe { tier : + MachineTier::TierTwo, time : 180f64, energy : 360000f64, temperature + : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Astroloy".into(), 10f64), + ("Inconel".into(), 5f64), ("Steel".into(), 5f64)] .into_iter() + .collect() }), ("ItemBatteryCharger".into(), Recipe { tier : + MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 10f64)] .into_iter().collect() }), + ("ItemBatteryChargerSmall".into(), Recipe { tier : + MachineTier::TierOne, time : 1f64, energy : 250f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }), + ("ItemCableAnalyser".into(), Recipe { tier : MachineTier::TierOne, + time : 5f64, energy : 100f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 1f64), + ("Silicon".into(), 2f64)] .into_iter().collect() }), ("ItemCableCoil" + .into(), Recipe { tier : MachineTier::TierOne, time : 1f64, energy : + 100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : + vec![("Copper".into(), 0.5f64)] .into_iter().collect() }), + ("ItemCableCoilHeavy".into(), Recipe { tier : MachineTier::TierOne, + time : 5f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 0.5f64), ("Gold".into(), 0.5f64)] + .into_iter().collect() }), ("ItemCableFuse".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron" + .into(), 5f64)] .into_iter().collect() }), ("ItemCreditCard".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 200f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 2f64), ("Silicon".into(), 5f64)] .into_iter().collect() }), + ("ItemDataDisk".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] + .into_iter().collect() }), ("ItemElectronicParts".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 10f64, temperature + : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold" + .into(), 2f64), ("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemFlashingLight".into(), Recipe { tier : MachineTier::TierOne, + time : 5f64, energy : 100f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 3f64), ("Iron".into(), 2f64)] + .into_iter().collect() }), ("ItemHEMDroidRepairKit".into(), Recipe { + tier : MachineTier::TierTwo, time : 40f64, energy : 1500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Electrum".into(), + 10f64), ("Inconel".into(), 5f64), ("Solder".into(), 5f64)] + .into_iter().collect() }), ("ItemIntegratedCircuit10".into(), Recipe + { tier : MachineTier::TierOne, time : 40f64, energy : 4000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 4i64, reagents : vec![("Electrum".into(), + 5f64), ("Gold".into(), 10f64), ("Solder".into(), 2f64), ("Steel" + .into(), 4f64)] .into_iter().collect() }), ("ItemKitAIMeE".into(), + Recipe { tier : MachineTier::TierTwo, time : 25f64, energy : 2200f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 7i64, reagents : vec![("Astroloy".into(), + 10f64), ("Constantan".into(), 8f64), ("Copper".into(), 5f64), + ("Electrum".into(), 15f64), ("Gold".into(), 5f64), ("Invar".into(), + 7f64), ("Steel".into(), 22f64)] .into_iter().collect() }), + ("ItemKitAdvancedComposter".into(), Recipe { tier : + MachineTier::TierTwo, time : 55f64, energy : 20000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 15f64), + ("Electrum".into(), 20f64), ("Solder".into(), 5f64), ("Steel".into(), + 30f64)] .into_iter().collect() }), ("ItemKitAdvancedFurnace".into(), + Recipe { tier : MachineTier::TierTwo, time : 180f64, energy : + 36000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 6i64, reagents : + vec![("Copper".into(), 25f64), ("Electrum".into(), 15f64), ("Gold" + .into(), 5f64), ("Silicon".into(), 6f64), ("Solder".into(), 8f64), + ("Steel".into(), 30f64)] .into_iter().collect() }), + ("ItemKitAdvancedPackagingMachine".into(), Recipe { tier : + MachineTier::TierTwo, time : 60f64, energy : 18000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Constantan".into(), 10f64), + ("Copper".into(), 10f64), ("Electrum".into(), 15f64), ("Steel" + .into(), 20f64)] .into_iter().collect() }), ("ItemKitAutoMinerSmall" + .into(), Recipe { tier : MachineTier::TierTwo, time : 90f64, energy : + 9000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 5i64, reagents : + vec![("Copper".into(), 15f64), ("Electrum".into(), 50f64), ("Invar" + .into(), 25f64), ("Iron".into(), 15f64), ("Steel".into(), 100f64)] + .into_iter().collect() }), ("ItemKitAutomatedOven".into(), Recipe { + tier : MachineTier::TierTwo, time : 50f64, energy : 15000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 5i64, reagents : vec![("Constantan" + .into(), 5f64), ("Copper".into(), 15f64), ("Gold".into(), 10f64), + ("Solder".into(), 10f64), ("Steel".into(), 25f64)] .into_iter() + .collect() }), ("ItemKitBattery".into(), Recipe { tier : + MachineTier::TierOne, time : 120f64, energy : 12000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold" + .into(), 20f64), ("Steel".into(), 20f64)] .into_iter().collect() }), + ("ItemKitBatteryLarge".into(), Recipe { tier : MachineTier::TierTwo, + time : 240f64, energy : 96000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 6i64, + reagents : vec![("Copper".into(), 35f64), ("Electrum".into(), 10f64), + ("Gold".into(), 35f64), ("Silicon".into(), 5f64), ("Steel".into(), + 35f64), ("Stellite".into(), 2f64)] .into_iter().collect() }), + ("ItemKitBeacon".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 4i64, + reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 4f64), + ("Solder".into(), 2f64), ("Steel".into(), 5f64)] .into_iter() + .collect() }), ("ItemKitComputer".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold" + .into(), 5f64), ("Iron".into(), 5f64)] .into_iter().collect() }), + ("ItemKitConsole".into(), Recipe { tier : MachineTier::TierOne, time + : 5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 3f64), + ("Iron".into(), 2f64)] .into_iter().collect() }), + ("ItemKitDynamicGenerator".into(), Recipe { tier : + MachineTier::TierOne, time : 120f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Gold".into(), 15f64), ("Nickel" + .into(), 15f64), ("Solder".into(), 5f64), ("Steel".into(), 20f64)] + .into_iter().collect() }), ("ItemKitElevator".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 4f64), ("Solder".into(), 2f64), ("Steel".into(), 2f64)] + .into_iter().collect() }), ("ItemKitFridgeBig".into(), Recipe { tier + : MachineTier::TierOne, time : 10f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 10f64), ("Gold" + .into(), 5f64), ("Iron".into(), 20f64), ("Steel".into(), 15f64)] + .into_iter().collect() }), ("ItemKitFridgeSmall".into(), Recipe { + tier : MachineTier::TierOne, time : 10f64, energy : 100f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 5f64), ("Gold".into(), 2f64), ("Iron".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitGasGenerator".into(), Recipe { tier : + MachineTier::TierOne, time : 120f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 10f64), ("Iron" + .into(), 50f64)] .into_iter().collect() }), ("ItemKitGroundTelescope" + .into(), Recipe { tier : MachineTier::TierOne, time : 150f64, energy + : 24000f64, temperature : RecipeRange { start : 1f64, stop : + 80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64, + stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix { + rule : 0i64, is_any : true, is_any_to_remove : false, reagents : + vec![] .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Electrum".into(), 15f64), ("Solder".into(), 10f64), ("Steel" + .into(), 25f64)] .into_iter().collect() }), ("ItemKitGrowLight" + .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 5f64), ("Electrum".into(), 10f64), ("Steel" + .into(), 5f64)] .into_iter().collect() }), ("ItemKitHarvie".into(), + Recipe { tier : MachineTier::TierOne, time : 60f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 5i64, reagents : vec![("Copper".into(), + 15f64), ("Electrum".into(), 10f64), ("Silicon".into(), 5f64), + ("Solder".into(), 5f64), ("Steel".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitHorizontalAutoMiner".into(), Recipe { tier : + MachineTier::TierTwo, time : 60f64, energy : 60000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 5i64, reagents : vec![("Copper".into(), 7f64), + ("Electrum".into(), 25f64), ("Invar".into(), 15f64), ("Iron".into(), + 8f64), ("Steel".into(), 60f64)] .into_iter().collect() }), + ("ItemKitHydroponicStation".into(), Recipe { tier : + MachineTier::TierOne, time : 120f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 20f64), ("Gold" + .into(), 5f64), ("Nickel".into(), 5f64), ("Steel".into(), 10f64)] + .into_iter().collect() }), ("ItemKitLandingPadAtmos".into(), Recipe { + tier : MachineTier::TierOne, time : 10f64, energy : 1000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 1f64), ("Steel".into(), 5f64)] .into_iter().collect() }), + ("ItemKitLandingPadBasic".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Steel" + .into(), 5f64)] .into_iter().collect() }), + ("ItemKitLandingPadWaypoint".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Steel" + .into(), 5f64)] .into_iter().collect() }), + ("ItemKitLargeSatelliteDish".into(), Recipe { tier : + MachineTier::TierOne, time : 240f64, energy : 72000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Astroloy".into(), 100f64), + ("Inconel".into(), 50f64), ("Waspaloy".into(), 20f64)] .into_iter() + .collect() }), ("ItemKitLogicCircuit".into(), Recipe { tier : + MachineTier::TierOne, time : 40f64, energy : 2000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 10f64), + ("Solder".into(), 2f64), ("Steel".into(), 4f64)] .into_iter() + .collect() }), ("ItemKitLogicInputOutput".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Gold" + .into(), 1f64)] .into_iter().collect() }), ("ItemKitLogicMemory" + .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy : + 1000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 1f64), ("Gold".into(), 1f64)] .into_iter() + .collect() }), ("ItemKitLogicProcessor".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 2f64)] .into_iter().collect() }), ("ItemKitLogicSwitch" + .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy : + 1000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 1f64), ("Gold".into(), 1f64)] .into_iter() + .collect() }), ("ItemKitLogicTransmitter".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 1f64), + ("Electrum".into(), 3f64), ("Gold".into(), 2f64), ("Silicon".into(), + 5f64)] .into_iter().collect() }), ("ItemKitMusicMachines".into(), + Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 1000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 2f64), ("Gold".into(), 2f64)] .into_iter().collect() }), + ("ItemKitPowerTransmitter".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 7f64), ("Gold" + .into(), 5f64), ("Steel".into(), 3f64)] .into_iter().collect() }), + ("ItemKitPowerTransmitterOmni".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 8f64), ("Gold" + .into(), 4f64), ("Steel".into(), 4f64)] .into_iter().collect() }), + ("ItemKitPressurePlate".into(), Recipe { tier : MachineTier::TierOne, + time : 10f64, energy : 1000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)] + .into_iter().collect() }), ("ItemKitResearchMachine".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 10f64, temperature + : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold" + .into(), 2f64), ("Iron".into(), 9f64)] .into_iter().collect() }), + ("ItemKitSatelliteDish".into(), Recipe { tier : MachineTier::TierOne, + time : 120f64, energy : 24000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Electrum".into(), 15f64), ("Solder".into(), 10f64), + ("Steel".into(), 20f64)] .into_iter().collect() }), ("ItemKitSensor" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 10f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), + 3f64)] .into_iter().collect() }), ("ItemKitSmallSatelliteDish" + .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, energy : + 6000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 10f64), ("Gold".into(), 5f64)] .into_iter() + .collect() }), ("ItemKitSolarPanel".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold" + .into(), 5f64), ("Steel".into(), 15f64)] .into_iter().collect() }), + ("ItemKitSolarPanelBasic".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold" + .into(), 2f64), ("Iron".into(), 10f64)] .into_iter().collect() }), + ("ItemKitSolarPanelBasicReinforced".into(), Recipe { tier : + MachineTier::TierTwo, time : 120f64, energy : 24000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 10f64), + ("Electrum".into(), 2f64), ("Invar".into(), 10f64), ("Steel".into(), + 10f64)] .into_iter().collect() }), ("ItemKitSolarPanelReinforced" + .into(), Recipe { tier : MachineTier::TierTwo, time : 120f64, energy + : 24000f64, temperature : RecipeRange { start : 1f64, stop : + 80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64, + stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix { + rule : 0i64, is_any : true, is_any_to_remove : false, reagents : + vec![] .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Astroloy".into(), 15f64), ("Copper".into(), 20f64), + ("Electrum".into(), 5f64), ("Steel".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitSolidGenerator".into(), Recipe { tier : + MachineTier::TierOne, time : 120f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 10f64), ("Iron" + .into(), 50f64)] .into_iter().collect() }), ("ItemKitSpeaker".into(), + Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 1000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 1f64), ("Gold".into(), 1f64), ("Steel".into(), 5f64)] .into_iter() + .collect() }), ("ItemKitStirlingEngine".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold" + .into(), 5f64), ("Steel".into(), 30f64)] .into_iter().collect() }), + ("ItemKitTransformer".into(), Recipe { tier : MachineTier::TierOne, + time : 60f64, energy : 12000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Electrum".into(), 5f64), ("Steel".into(), 10f64)] + .into_iter().collect() }), ("ItemKitTransformerSmall".into(), Recipe + { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 3f64), ("Gold".into(), 1f64), ("Iron".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitTurbineGenerator".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 4f64), ("Iron".into(), 5f64), ("Solder".into(), 4f64)] + .into_iter().collect() }), ("ItemKitUprightWindTurbine".into(), + Recipe { tier : MachineTier::TierOne, time : 60f64, energy : + 12000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 10f64), ("Gold".into(), 5f64), ("Iron".into(), + 10f64)] .into_iter().collect() }), ("ItemKitVendingMachine".into(), + Recipe { tier : MachineTier::TierOne, time : 60f64, energy : + 15000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Electrum".into(), 50f64), ("Gold".into(), 50f64), ("Solder" + .into(), 10f64), ("Steel".into(), 20f64)] .into_iter().collect() }), + ("ItemKitVendingMachineRefrigerated".into(), Recipe { tier : + MachineTier::TierTwo, time : 60f64, energy : 25000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Electrum".into(), 80f64), + ("Gold".into(), 60f64), ("Solder".into(), 30f64), ("Steel".into(), + 40f64)] .into_iter().collect() }), ("ItemKitWeatherStation".into(), + Recipe { tier : MachineTier::TierOne, time : 60f64, energy : + 12000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Copper".into(), 5f64), ("Gold".into(), 3f64), ("Iron".into(), + 8f64), ("Steel".into(), 3f64)] .into_iter().collect() }), + ("ItemKitWindTurbine".into(), Recipe { tier : MachineTier::TierTwo, + time : 60f64, energy : 12000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 10f64), ("Electrum".into(), 5f64), + ("Steel".into(), 20f64)] .into_iter().collect() }), ("ItemLabeller" + .into(), Recipe { tier : MachineTier::TierOne, time : 15f64, energy : + 800f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 2f64), ("Gold".into(), 1f64), ("Iron".into(), + 3f64)] .into_iter().collect() }), ("ItemLaptop".into(), Recipe { tier + : MachineTier::TierTwo, time : 60f64, energy : 18000f64, temperature + : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 5i64, reagents : vec![("Copper".into(), 5.5f64), + ("Electrum".into(), 5f64), ("Gold".into(), 12f64), ("Solder".into(), + 5f64), ("Steel".into(), 2f64)] .into_iter().collect() }), + ("ItemPowerConnector".into(), Recipe { tier : MachineTier::TierOne, + time : 1f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 3f64), + ("Iron".into(), 10f64)] .into_iter().collect() }), + ("ItemResearchCapsule".into(), Recipe { tier : MachineTier::TierOne, + time : 3f64, energy : 400f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 3f64), ("Gold".into(), 2f64), + ("Iron".into(), 9f64)] .into_iter().collect() }), + ("ItemResearchCapsuleGreen".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 10f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Astroloy".into(), 2f64), + ("Copper".into(), 3f64), ("Gold".into(), 2f64), ("Iron".into(), + 9f64)] .into_iter().collect() }), ("ItemResearchCapsuleRed".into(), + Recipe { tier : MachineTier::TierOne, time : 8f64, energy : 50f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 3f64), ("Gold".into(), 2f64), ("Iron".into(), 2f64)] .into_iter() + .collect() }), ("ItemResearchCapsuleYellow".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Astroloy".into(), 3f64), + ("Copper".into(), 3f64), ("Gold".into(), 2f64), ("Iron".into(), + 9f64)] .into_iter().collect() }), ("ItemSoundCartridgeBass".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 2f64), ("Gold".into(), 2f64), ("Silicon".into(), 2f64)] .into_iter() + .collect() }), ("ItemSoundCartridgeDrums".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 2f64), ("Silicon".into(), 2f64)] .into_iter().collect() }), + ("ItemSoundCartridgeLeads".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 2f64), ("Silicon".into(), 2f64)] .into_iter().collect() }), + ("ItemSoundCartridgeSynth".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 2f64), ("Silicon".into(), 2f64)] .into_iter().collect() }), + ("ItemTablet".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 3f64), ("Gold".into(), 2f64), + ("Solder".into(), 5f64)] .into_iter().collect() }), ("ItemWallLight" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 10f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 2f64), ("Iron".into(), 1f64)] .into_iter() + .collect() }), ("MotherboardComms".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 5f64), + ("Electrum".into(), 2f64), ("Gold".into(), 5f64), ("Silver".into(), + 5f64)] .into_iter().collect() }), ("MotherboardLogic".into(), Recipe + { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 5f64), ("Gold".into(), 5f64)] .into_iter().collect() }), + ("MotherboardProgrammableChip".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64)] .into_iter().collect() }), ("MotherboardRockets" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Electrum".into(), 5f64), ("Solder".into(), 5f64)] .into_iter() + .collect() }), ("MotherboardSorter".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Gold".into(), 5f64), ("Silver" + .into(), 5f64)] .into_iter().collect() }), ("PipeBenderMod".into(), + Recipe { tier : MachineTier::TierTwo, time : 180f64, energy : + 72000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Constantan".into(), 8f64), ("Electrum".into(), 8f64), + ("Solder".into(), 8f64), ("Steel".into(), 35f64)] .into_iter() + .collect() }), ("PortableComposter".into(), Recipe { tier : + MachineTier::TierOne, time : 55f64, energy : 20000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 15f64), + ("Steel".into(), 10f64)] .into_iter().collect() }), + ("PortableSolarPanel".into(), Recipe { tier : MachineTier::TierOne, + time : 5f64, energy : 200f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 3f64), + ("Iron".into(), 5f64)] .into_iter().collect() }), ("ToolPrinterMod" + .into(), Recipe { tier : MachineTier::TierTwo, time : 180f64, energy + : 72000f64, temperature : RecipeRange { start : 1f64, stop : + 80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64, + stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix { + rule : 0i64, is_any : true, is_any_to_remove : false, reagents : + vec![] .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Constantan".into(), 8f64), ("Electrum".into(), 8f64), + ("Solder".into(), 8f64), ("Steel".into(), 35f64)] .into_iter() + .collect() }) + ] + .into_iter() + .collect(), + }), + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ); + map.insert( + -827912235i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElevatorLevelFront".into(), + prefab_hash: -827912235i32, + desc: "".into(), + name: "Elevator Level (Cabled)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ElevatorSpeed, MemoryAccess::ReadWrite), + (LogicType::ElevatorLevel, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Elevator, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Elevator, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2060648791i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElevatorLevelIndustrial".into(), + prefab_hash: 2060648791i32, + desc: "".into(), + name: "Elevator Level".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ElevatorSpeed, MemoryAccess::ReadWrite), + (LogicType::ElevatorLevel, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Elevator, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Elevator, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 826144419i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElevatorShaft".into(), + prefab_hash: 826144419i32, + desc: "".into(), + name: "Elevator Shaft (Cabled)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ElevatorSpeed, + MemoryAccess::ReadWrite), (LogicType::ElevatorLevel, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Elevator, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Elevator, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1998354978i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElevatorShaftIndustrial".into(), + prefab_hash: 1998354978i32, + desc: "".into(), + name: "Elevator Shaft".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::ElevatorSpeed, MemoryAccess::ReadWrite), + (LogicType::ElevatorLevel, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Elevator, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Elevator, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1668452680i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureEmergencyButton".into(), + prefab_hash: 1668452680i32, + desc: "Description coming.".into(), + name: "Important Button".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2035781224i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureEngineMountTypeA1".into(), + prefab_hash: 2035781224i32, + desc: "".into(), + name: "Engine Mount (Type A1)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1429782576i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureEvaporationChamber".into(), + prefab_hash: -1429782576i32, + desc: "A device for safely evaporating liquids into gasses. Liquids and Gasses will both exist safely inside the device. Lowering the pressure target of the in-built back pressure regulator using the setting wheel will change the boiling temperature of liquids inside.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Evaporation Chamber. \n Paired with Condensation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner." + .into(), + name: "Evaporation Chamber".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.001f32, + radiation_factor: 0.000050000002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input2 }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 195298587i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureExpansionValve".into(), + prefab_hash: 195298587i32, + desc: "Allows for moving liquids from a liquid pipe into a gas pipe. Only allows liquids to pass in one direction. Typically this is done to allow the liquid to evaporate into a gas as part of an airconditioning loop." + .into(), + name: "Expansion Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1622567418i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFairingTypeA1".into(), + prefab_hash: 1622567418i32, + desc: "".into(), + name: "Fairing (Type A1)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -104908736i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFairingTypeA2".into(), + prefab_hash: -104908736i32, + desc: "".into(), + name: "Fairing (Type A2)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1900541738i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFairingTypeA3".into(), + prefab_hash: -1900541738i32, + desc: "".into(), + name: "Fairing (Type A3)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -348054045i32, + StructureCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFiltration".into(), + prefab_hash: -348054045i32, + desc: "The Filtration Unit is based on a long-standing ExMin system, itself based on older designs of uncertain provenance. It is available in the Kit (Atmospherics).\nThe device has nonetheless proven indispensable for Stationeer atmospheric systems, as it can filter two gases simultaneously from a single pipe network using a dual filter array. The unit has an input, and a filter output as well as an unfiltered outlet for any residual gases.\n" + .into(), + name: "Filtration".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::PressureOutput2, MemoryAccess::Read), + (LogicType::TemperatureOutput2, MemoryAccess::Read), + (LogicType::RatioOxygenOutput2, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput2, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput2, MemoryAccess::Read), + (LogicType::RatioPollutantOutput2, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput2, MemoryAccess::Read), + (LogicType::RatioWaterOutput2, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput2, MemoryAccess::Read), + (LogicType::TotalMolesOutput2, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::CombustionOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput2, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioSteamOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput2, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo + { name : "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name : + "Programmable Chip".into(), typ : Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Waste }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1529819532i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFlagSmall".into(), + prefab_hash: -1529819532i32, + desc: "".into(), + name: "Small Flag".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1535893860i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFlashingLight".into(), + prefab_hash: -1535893860i32, + desc: "Few objects or ideas are as clearly and transparently named as the Flashing Light, although fans of scrupulous accuracy have been known to refer to it by its full, official title: \'Default Yellow Flashing Light\'." + .into(), + name: "Flashing Light".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 839890807i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFlatBench".into(), + prefab_hash: 839890807i32, + desc: "".into(), + name: "Bench (Flat)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1048813293i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFloorDrain".into(), + prefab_hash: 1048813293i32, + desc: "A passive liquid floor inlet that quickly removes liquids in one direction from the world into the connected pipe network. It will equalise gasses with the world atmosphere also." + .into(), + name: "Passive Liquid Inlet".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1432512808i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrame".into(), + prefab_hash: 1432512808i32, + desc: "More durable than the Iron Frame, steel frames also have several variations for more complex constructions, such as the Steel Frame (Corner) and Steel Frame (Corner Cut). Like iron frames, they are placed then completed by welding Steel Sheets to the open framework." + .into(), + name: "Steel Frame".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2112390778i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrameCorner".into(), + prefab_hash: -2112390778i32, + desc: "More durable than the Iron Frame, steel frames also offer several variations for more complex lattice constructions. \nWith a little patience and maneuvering, the corner frame\'s Gothic-inspired silhouette allows the creation of ogival arches and even more ambitious architecture, although they are not airtight and cannot be built on." + .into(), + name: "Steel Frame (Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 271315669i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrameCornerCut".into(), + prefab_hash: 271315669i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Steel Frame (Corner Cut)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1240951678i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrameIron".into(), + prefab_hash: -1240951678i32, + desc: "".into(), + name: "Iron Frame".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -302420053i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrameSide".into(), + prefab_hash: -302420053i32, + desc: "More durable than the Iron Frame, steel frames also provide variations for more ornate constructions." + .into(), + name: "Steel Frame (Side)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 958476921i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFridgeBig".into(), + prefab_hash: 958476921i32, + desc: "The Xigo Koolaid fridge is a self-cooling storage device with 15 slots that preserves food when powered and turned on. While many users have complained about the placement of the power switch, its place in the pantheon of off-world whiteware is unquestioned.\n \nWith its own permanent internal atmosphere, the Koolaid fridge slows the decay of food by maintaining an optimal internal temperature. Its power usage varies on the external temperature against which it must balance its internal temperature. As such, it must shed heat to operate, so the Koolaid fridge DOES NOT work in a vacuum.\n \nAlso, don\'t leave the door open, as it will equalize with the current world temperature. And maybe start to beep.\n\nFor more information about food preservation, visit the food decay section of the Stationpedia." + .into(), + name: "Fridge (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 751887598i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFridgeSmall".into(), + prefab_hash: 751887598i32, + desc: "Essentially a heavily insulated box that allows users to pipe in any desired atmosphere, the Recurso Minibar fridge was a simple solution to the problem of food decay. It stores a small number of items, at any temperature you can muster.\n \n For more information about food preservation, visit the food decay section of the Stationpedia." + .into(), + name: "Fridge Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1947944864i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFurnace".into(), + prefab_hash: 1947944864i32, + desc: "The Zhurong furnace employs a high-temperature gas mixture of Oxygen and Volatiles to smelt ingots and a range of alloys as raw materials for fabricators.\nA basic gas mixture can be achieved by adding Ice (Oxite) and Ice (Volatiles) in a 1:2 ratio directly to the furnace, but more complex alloys will require careful management of a dedicated gas mixing network. Exact ingredient ratios must be observed. Likewise, smelting ores at insufficient temperatures will produce reagents, which must be recycled.\nIf liquids are present in the furnace, they will gather there until the furnace is connected to a liquid pipe network." + .into(), + name: "Furnace".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output2 }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: false, + has_open_state: true, + has_reagents: true, + }, + } + .into(), + ); + map.insert( + 1033024712i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFuselageTypeA1".into(), + prefab_hash: 1033024712i32, + desc: "".into(), + name: "Fuselage (Type A1)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1533287054i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFuselageTypeA2".into(), + prefab_hash: -1533287054i32, + desc: "".into(), + name: "Fuselage (Type A2)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1308115015i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFuselageTypeA4".into(), + prefab_hash: 1308115015i32, + desc: "".into(), + name: "Fuselage (Type A4)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 147395155i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFuselageTypeC5".into(), + prefab_hash: 147395155i32, + desc: "".into(), + name: "Fuselage (Type C5)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1165997963i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasGenerator".into(), + prefab_hash: 1165997963i32, + desc: "".into(), + name: "Gas Fuel Generator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.01f32, + radiation_factor: 0.01f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PowerGeneration, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2104106366i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasMixer".into(), + prefab_hash: 2104106366i32, + desc: "Indispensable for producing precise atmospheric ratios, this gas mixer blends two gases in proportions ranging anywhere from 0-100%." + .into(), + name: "Gas Mixer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1252983604i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasSensor".into(), + prefab_hash: -1252983604i32, + desc: "Gas sensors are designed to monitor and report basic atmospheric information, including temperature, pressure, and gas ratios. They also make wonderful wedding presents." + .into(), + name: "Gas Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1632165346i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasTankStorage".into(), + prefab_hash: 1632165346i32, + desc: "When connected to a pipe network, the tank storage unit allows you to refill a Canister, as well as read various atmospheric data from the Gas Canister." + .into(), + name: "Gas Tank Storage".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Quantity, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1680477930i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasUmbilicalFemale".into(), + prefab_hash: -1680477930i32, + desc: "".into(), + name: "Umbilical Socket (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -648683847i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasUmbilicalFemaleSide".into(), + prefab_hash: -648683847i32, + desc: "".into(), + name: "Umbilical Socket Angle (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1814939203i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasUmbilicalMale".into(), + prefab_hash: -1814939203i32, + desc: "0.Left\n1.Center\n2.Right".into(), + name: "Umbilical (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -324331872i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGlassDoor".into(), + prefab_hash: -324331872i32, + desc: "0.Operate\n1.Logic".into(), + name: "Glass Door".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -214232602i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGovernedGasEngine".into(), + prefab_hash: -214232602i32, + desc: "The most reliable of all the rocket engines, the Pumped Gas Engine runs on a 2:1 mix of Volatiles to Oxygen gas." + .into(), + name: "Pumped Gas Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::Throttle, MemoryAccess::ReadWrite), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::PassedMoles, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -619745681i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGroundBasedTelescope".into(), + prefab_hash: -619745681i32, + desc: "A telescope that can be oriented to observe Celestial Bodies. When within full alignment will show orbital information for that celestial object. Atmospheric conditions may disrupt the ability to observe some objects at some times of day. To collect Horizontal and Vertical values you can use a Rocket Celestial Tracker while it is in orbit, or a Daylight Sensor for primary body data." + .into(), + name: "Telescope".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::HorizontalRatio, MemoryAccess::ReadWrite), + (LogicType::VerticalRatio, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::CelestialHash, MemoryAccess::Read), + (LogicType::AlignmentError, MemoryAccess::Read), + (LogicType::DistanceAu, MemoryAccess::Read), (LogicType::OrbitPeriod, + MemoryAccess::Read), (LogicType::Inclination, MemoryAccess::Read), + (LogicType::Eccentricity, MemoryAccess::Read), + (LogicType::SemiMajorAxis, MemoryAccess::Read), + (LogicType::DistanceKm, MemoryAccess::Read), + (LogicType::CelestialParentHash, MemoryAccess::Read), + (LogicType::TrueAnomaly, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1758710260i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGrowLight".into(), + prefab_hash: -1758710260i32, + desc: "Agrizero\'s leading hydroponic lighting system, the GrowUp UV light supplements sunshine in low light or sun-distant conditions. The unit adds growability over the space of a grid, so requires proximate placement to work. " + .into(), + name: "Grow Light".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 958056199i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHarvie".into(), + prefab_hash: 958056199i32, + desc: "Use above a Hydroponics Tray or Hydroponics Device to manage the planting and harvest of your crops. It contains a button that will allow you to activate it\'s modes, or connect it to a logic system to do this for you. The modes indicate current growth status of the plant below. Import is used for planting, and harvested plants are sent to export." + .into(), + name: "Harvie".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::Plant, + MemoryAccess::Write), (LogicType::Harvest, MemoryAccess::Write), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Idle".into()), (1u32, "Happy".into()), (2u32, "UnHappy" + .into()), (3u32, "Dead".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Plant }, SlotInfo { name + : "Export".into(), typ : Class::None }, SlotInfo { name : "Hand".into(), + typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 944685608i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHeatExchangeLiquidtoGas".into(), + prefab_hash: 944685608i32, + desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass separate liquid and gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to devices like a Volume Pump or a Liquid Back Volume Regulator." + .into(), + name: "Heat Exchanger - Liquid + Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 21266291i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHeatExchangerGastoGas".into(), + prefab_hash: 21266291i32, + desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass two gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to gas management devices like a Volume Pump or a Back Pressure Regulator." + .into(), + name: "Heat Exchanger - Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -613784254i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHeatExchangerLiquidtoLiquid".into(), + prefab_hash: -613784254i32, + desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass two liquid networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to liquid management devices like a Liquid Volume Pump or a Liquid Back Volume Regulator.\n" + .into(), + name: "Heat Exchanger - Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1070427573i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHorizontalAutoMiner".into(), + prefab_hash: 1070427573i32, + desc: "The Recurso OGRE (Orthogonal Ground Rotating Excavator) is a base structure with attached mining vehicle, which will mine a horizontal shaft up to X meters long. When full, the mining vehicle will return to the base to empty itself, before returning to dig. If it encounters empty space, it will also return to base and await instruction. The unit will return if deactivated.\n \nThe OGRE can be connected to a chute system, and is controllable by a logic network. Note that the OGRE outputs more ore than a conventional Mining Drill over the same area, due to more efficient processing.\n\nMODES\nIdle - 0\nMining - 1\nReturning - 2\nDepostingOre - 3\nFinished - 4\n" + .into(), + name: "OGRE".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1888248335i32, + StructureLogicDeviceConsumerMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHydraulicPipeBender".into(), + prefab_hash: -1888248335i32, + desc: "A go-to tool for all your atmospheric and plumbing needs, the ExMin Atmoprinter will create everything from pipes, pumps and tanks, to vents and filters, ensuring your survival in any environment. Upgrade the Atmoprinter using a Pipe Bender Mod for additional recipes and faster processing speeds." + .into(), + name: "Hydraulic Pipe Bender".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RecipeHash, + MemoryAccess::ReadWrite), (LogicType::CompletionRatio, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name + : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), + "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" + .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), + "ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot" + .into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(), + "ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel" + .into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(), + "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: Some(FabricatorInfo { + tier: MachineTier::Undefined, + recipes: vec![ + ("ApplianceSeedTray".into(), Recipe { tier : MachineTier::TierOne, + time : 10f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Iron".into(), 10f64), + ("Silicon".into(), 15f64)] .into_iter().collect() }), + ("ItemActiveVent".into(), Recipe { tier : MachineTier::TierOne, time + : 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 1f64), + ("Iron".into(), 5f64)] .into_iter().collect() }), + ("ItemAdhesiveInsulation".into(), Recipe { tier : + MachineTier::TierOne, time : 2f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Silicon".into(), 1f64), + ("Steel".into(), 0.5f64)] .into_iter().collect() }), + ("ItemDynamicAirCon".into(), Recipe { tier : MachineTier::TierOne, + time : 60f64, energy : 5000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 4i64, + reagents : vec![("Gold".into(), 5f64), ("Silver".into(), 5f64), + ("Solder".into(), 5f64), ("Steel".into(), 20f64)] .into_iter() + .collect() }), ("ItemDynamicScrubber".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Gold".into(), 5f64), ("Invar" + .into(), 5f64), ("Solder".into(), 5f64), ("Steel".into(), 20f64)] + .into_iter().collect() }), ("ItemGasCanisterEmpty".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 5f64)] .into_iter().collect() }), ("ItemGasCanisterSmart".into(), + Recipe { tier : MachineTier::TierTwo, time : 10f64, energy : 1000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 2f64), ("Silicon".into(), 2f64), ("Steel".into(), 15f64)] + .into_iter().collect() }), ("ItemGasFilterCarbonDioxide".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 5f64)] .into_iter().collect() }), ("ItemGasFilterCarbonDioxideL" + .into(), Recipe { tier : MachineTier::TierTwo, time : 45f64, energy : + 4000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite" + .into(), 1f64)] .into_iter().collect() }), + ("ItemGasFilterCarbonDioxideM".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Constantan".into(), 1f64), + ("Iron".into(), 5f64), ("Silver".into(), 5f64)] .into_iter() + .collect() }), ("ItemGasFilterNitrogen".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemGasFilterNitrogenL".into(), Recipe { + tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Invar".into(), + 1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)] + .into_iter().collect() }), ("ItemGasFilterNitrogenM".into(), Recipe { + tier : MachineTier::TierOne, time : 20f64, energy : 2500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Constantan" + .into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)] + .into_iter().collect() }), ("ItemGasFilterNitrousOxide".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 5f64)] .into_iter().collect() }), ("ItemGasFilterNitrousOxideL" + .into(), Recipe { tier : MachineTier::TierTwo, time : 45f64, energy : + 4000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite" + .into(), 1f64)] .into_iter().collect() }), + ("ItemGasFilterNitrousOxideM".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Constantan".into(), 1f64), + ("Iron".into(), 5f64), ("Silver".into(), 5f64)] .into_iter() + .collect() }), ("ItemGasFilterOxygen".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemGasFilterOxygenL".into(), Recipe { + tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Invar".into(), + 1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)] + .into_iter().collect() }), ("ItemGasFilterOxygenM".into(), Recipe { + tier : MachineTier::TierOne, time : 20f64, energy : 2500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Constantan" + .into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)] + .into_iter().collect() }), ("ItemGasFilterPollutants".into(), Recipe + { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 5f64)] .into_iter().collect() }), ("ItemGasFilterPollutantsL".into(), + Recipe { tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Invar".into(), + 1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)] + .into_iter().collect() }), ("ItemGasFilterPollutantsM".into(), Recipe + { tier : MachineTier::TierOne, time : 20f64, energy : 2500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Constantan" + .into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)] + .into_iter().collect() }), ("ItemGasFilterVolatiles".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 5f64)] .into_iter().collect() }), ("ItemGasFilterVolatilesL".into(), + Recipe { tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Invar".into(), + 1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)] + .into_iter().collect() }), ("ItemGasFilterVolatilesM".into(), Recipe + { tier : MachineTier::TierOne, time : 20f64, energy : 2500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Constantan" + .into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)] + .into_iter().collect() }), ("ItemGasFilterWater".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 5f64)] .into_iter().collect() }), ("ItemGasFilterWaterL".into(), + Recipe { tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Invar".into(), + 1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)] + .into_iter().collect() }), ("ItemGasFilterWaterM".into(), Recipe { + tier : MachineTier::TierOne, time : 20f64, energy : 2500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Constantan" + .into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)] + .into_iter().collect() }), ("ItemHydroponicTray".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 10f64)] .into_iter().collect() }), ("ItemKitAirlock".into(), Recipe { + tier : MachineTier::TierOne, time : 50f64, energy : 5000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 5f64), ("Gold".into(), 5f64), ("Steel".into(), 15f64)] .into_iter() + .collect() }), ("ItemKitAirlockGate".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Steel".into(), 25f64)] .into_iter().collect() }), + ("ItemKitAtmospherics".into(), Recipe { tier : MachineTier::TierOne, + time : 30f64, energy : 6000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 20f64), ("Gold".into(), 5f64), + ("Iron".into(), 10f64)] .into_iter().collect() }), ("ItemKitChute" + .into(), Recipe { tier : MachineTier::TierOne, time : 2f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 3f64)] .into_iter().collect() }), ("ItemKitCryoTube".into(), + Recipe { tier : MachineTier::TierTwo, time : 120f64, energy : + 24000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Copper".into(), 10f64), ("Gold".into(), 10f64), ("Silver" + .into(), 5f64), ("Steel".into(), 35f64)] .into_iter().collect() }), + ("ItemKitDrinkingFountain".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 620f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Iron" + .into(), 5f64), ("Silicon".into(), 8f64)] .into_iter().collect() }), + ("ItemKitDynamicCanister".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 20f64)] + .into_iter().collect() }), ("ItemKitDynamicGasTankAdvanced".into(), + Recipe { tier : MachineTier::TierTwo, time : 40f64, energy : 2000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 4i64, reagents : vec![("Copper".into(), + 5f64), ("Iron".into(), 20f64), ("Silicon".into(), 5f64), ("Steel" + .into(), 15f64)] .into_iter().collect() }), + ("ItemKitDynamicHydroponics".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), + ("Nickel".into(), 5f64), ("Steel".into(), 20f64)] .into_iter() + .collect() }), ("ItemKitDynamicLiquidCanister".into(), Recipe { tier + : MachineTier::TierOne, time : 20f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 20f64)] + .into_iter().collect() }), ("ItemKitDynamicMKIILiquidCanister" + .into(), Recipe { tier : MachineTier::TierTwo, time : 40f64, energy : + 2000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Copper".into(), 5f64), ("Iron".into(), 20f64), ("Silicon" + .into(), 5f64), ("Steel".into(), 15f64)] .into_iter().collect() }), + ("ItemKitEvaporationChamber".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 10f64), + ("Silicon".into(), 5f64), ("Steel".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitHeatExchanger".into(), Recipe { tier : + MachineTier::TierTwo, time : 30f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Invar".into(), 10f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), ("ItemKitIceCrusher" + .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy : + 3000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), + 3f64)] .into_iter().collect() }), ("ItemKitInsulatedLiquidPipe" + .into(), Recipe { tier : MachineTier::TierOne, time : 4f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Silicon".into(), 1f64), ("Steel".into(), 1f64)] .into_iter() + .collect() }), ("ItemKitInsulatedPipe".into(), Recipe { tier : + MachineTier::TierOne, time : 4f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Silicon".into(), 1f64), + ("Steel".into(), 1f64)] .into_iter().collect() }), + ("ItemKitInsulatedPipeUtility".into(), Recipe { tier : + MachineTier::TierOne, time : 15f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Silicon".into(), 1f64), + ("Steel".into(), 5f64)] .into_iter().collect() }), + ("ItemKitInsulatedPipeUtilityLiquid".into(), Recipe { tier : + MachineTier::TierOne, time : 15f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Silicon".into(), 1f64), + ("Steel".into(), 5f64)] .into_iter().collect() }), + ("ItemKitLargeDirectHeatExchanger".into(), Recipe { tier : + MachineTier::TierTwo, time : 30f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Invar".into(), 10f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), + ("ItemKitLargeExtendableRadiator".into(), Recipe { tier : + MachineTier::TierTwo, time : 30f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 10f64), + ("Invar".into(), 10f64), ("Steel".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitLiquidRegulator".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 1f64), ("Iron".into(), 5f64)] .into_iter().collect() }), + ("ItemKitLiquidTank".into(), Recipe { tier : MachineTier::TierOne, + time : 20f64, energy : 2000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 5f64), ("Steel".into(), 20f64)] + .into_iter().collect() }), ("ItemKitLiquidTankInsulated".into(), + Recipe { tier : MachineTier::TierOne, time : 30f64, energy : 6000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 5f64), ("Silicon".into(), 30f64), ("Steel".into(), 20f64)] + .into_iter().collect() }), ("ItemKitLiquidTurboVolumePump".into(), + Recipe { tier : MachineTier::TierTwo, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 4i64, reagents : vec![("Copper".into(), + 4f64), ("Electrum".into(), 5f64), ("Gold".into(), 4f64), ("Steel" + .into(), 5f64)] .into_iter().collect() }), + ("ItemKitPassiveLargeRadiatorGas".into(), Recipe { tier : + MachineTier::TierTwo, time : 30f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Invar" + .into(), 5f64), ("Steel".into(), 5f64)] .into_iter().collect() }), + ("ItemKitPassiveLargeRadiatorLiquid".into(), Recipe { tier : + MachineTier::TierTwo, time : 30f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Invar" + .into(), 5f64), ("Steel".into(), 5f64)] .into_iter().collect() }), + ("ItemKitPassthroughHeatExchanger".into(), Recipe { tier : + MachineTier::TierTwo, time : 30f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Invar".into(), 10f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), ("ItemKitPipe".into(), + Recipe { tier : MachineTier::TierOne, time : 2f64, energy : 200f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 0.5f64)] .into_iter().collect() }), ("ItemKitPipeLiquid".into(), + Recipe { tier : MachineTier::TierOne, time : 2f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 0.5f64)] .into_iter().collect() }), ("ItemKitPipeOrgan".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 3f64)] .into_iter().collect() }), ("ItemKitPipeRadiator".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Gold".into(), + 3f64), ("Steel".into(), 2f64)] .into_iter().collect() }), + ("ItemKitPipeRadiatorLiquid".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Gold".into(), 3f64), ("Steel" + .into(), 2f64)] .into_iter().collect() }), ("ItemKitPipeUtility" + .into(), Recipe { tier : MachineTier::TierOne, time : 15f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 5f64)] .into_iter().collect() }), + ("ItemKitPipeUtilityLiquid".into(), Recipe { tier : + MachineTier::TierOne, time : 15f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemKitPlanter".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 10f64)] + .into_iter().collect() }), ("ItemKitPortablesConnector".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 5f64)] .into_iter().collect() }), ("ItemKitPoweredVent".into(), + Recipe { tier : MachineTier::TierTwo, time : 20f64, energy : 1000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Electrum".into(), + 5f64), ("Invar".into(), 2f64), ("Steel".into(), 5f64)] .into_iter() + .collect() }), ("ItemKitRegulator".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 1f64), ("Iron".into(), 5f64)] .into_iter().collect() }), + ("ItemKitSensor".into(), Recipe { tier : MachineTier::TierOne, time : + 10f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), + ("Iron".into(), 1f64)] .into_iter().collect() }), ("ItemKitShower" + .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy : + 3000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 5f64), ("Iron".into(), 5f64), ("Silicon" + .into(), 5f64)] .into_iter().collect() }), ("ItemKitSleeper".into(), + Recipe { tier : MachineTier::TierOne, time : 60f64, energy : 6000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 10f64), ("Gold".into(), 10f64), ("Steel".into(), 25f64)] .into_iter() + .collect() }), ("ItemKitSmallDirectHeatExchanger".into(), Recipe { + tier : MachineTier::TierOne, time : 10f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 5f64), ("Steel".into(), 3f64)] .into_iter().collect() }), + ("ItemKitStandardChute".into(), Recipe { tier : MachineTier::TierOne, + time : 5f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Constantan".into(), 2f64), ("Electrum".into(), + 2f64), ("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemKitSuitStorage".into(), Recipe { tier : MachineTier::TierOne, + time : 30f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 5f64), ("Iron".into(), 15f64), + ("Silver".into(), 5f64)] .into_iter().collect() }), ("ItemKitTank" + .into(), Recipe { tier : MachineTier::TierOne, time : 20f64, energy : + 2000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 5f64), ("Steel".into(), 20f64)] .into_iter() + .collect() }), ("ItemKitTankInsulated".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 6000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), + ("Silicon".into(), 30f64), ("Steel".into(), 20f64)] .into_iter() + .collect() }), ("ItemKitTurboVolumePump".into(), Recipe { tier : + MachineTier::TierTwo, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 4f64), + ("Electrum".into(), 5f64), ("Gold".into(), 4f64), ("Steel".into(), + 5f64)] .into_iter().collect() }), ("ItemKitWaterBottleFiller".into(), + Recipe { tier : MachineTier::TierOne, time : 7f64, energy : 620f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 3f64), ("Iron".into(), 5f64), ("Silicon".into(), 8f64)] .into_iter() + .collect() }), ("ItemKitWaterPurifier".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 6000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold" + .into(), 5f64), ("Iron".into(), 10f64)] .into_iter().collect() }), + ("ItemLiquidCanisterEmpty".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemLiquidCanisterSmart".into(), Recipe + { tier : MachineTier::TierTwo, time : 10f64, energy : 1000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 2f64), ("Silicon".into(), 2f64), ("Steel".into(), 15f64)] + .into_iter().collect() }), ("ItemLiquidDrain".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron" + .into(), 5f64)] .into_iter().collect() }), ("ItemLiquidPipeAnalyzer" + .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Electrum".into(), 2f64), ("Gold".into(), 2f64), ("Iron" + .into(), 2f64)] .into_iter().collect() }), ("ItemLiquidPipeHeater" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 3f64), ("Gold".into(), 3f64), ("Iron".into(), + 5f64)] .into_iter().collect() }), ("ItemLiquidPipeValve".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 2f64), ("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemLiquidPipeVolumePump".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold" + .into(), 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }), + ("ItemPassiveVent".into(), Recipe { tier : MachineTier::TierOne, time + : 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemPassiveVentInsulated".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Silicon".into(), 5f64), + ("Steel".into(), 1f64)] .into_iter().collect() }), + ("ItemPipeAnalyizer".into(), Recipe { tier : MachineTier::TierOne, + time : 10f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Electrum".into(), 2f64), ("Gold".into(), 2f64), + ("Iron".into(), 2f64)] .into_iter().collect() }), ("ItemPipeCowl" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 3f64)] .into_iter().collect() }), ("ItemPipeDigitalValve" + .into(), Recipe { tier : MachineTier::TierOne, time : 15f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 2f64), ("Invar".into(), 3f64), ("Steel" + .into(), 5f64)] .into_iter().collect() }), ("ItemPipeGasMixer" + .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 2f64), ("Gold".into(), 2f64), ("Iron".into(), + 2f64)] .into_iter().collect() }), ("ItemPipeHeater".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 3f64), ("Gold".into(), 3f64), ("Iron".into(), 5f64)] .into_iter() + .collect() }), ("ItemPipeIgniter".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Electrum".into(), 2f64), + ("Iron".into(), 2f64)] .into_iter().collect() }), ("ItemPipeLabel" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemPipeMeter".into(), + Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 2f64), ("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemPipeValve".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 3f64)] + .into_iter().collect() }), ("ItemPipeVolumePump".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 3f64), ("Gold".into(), 2f64), ("Iron".into(), 5f64)] .into_iter() + .collect() }), ("ItemWallCooler".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold" + .into(), 1f64), ("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemWallHeater".into(), Recipe { tier : MachineTier::TierOne, time + : 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 3f64), ("Gold".into(), 1f64), + ("Iron".into(), 3f64)] .into_iter().collect() }), ("ItemWaterBottle" + .into(), Recipe { tier : MachineTier::TierOne, time : 4f64, energy : + 120f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : vec![("Iron" + .into(), 2f64), ("Silicon".into(), 4f64)] .into_iter().collect() }), + ("ItemWaterPipeDigitalValve".into(), Recipe { tier : + MachineTier::TierOne, time : 15f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Invar" + .into(), 3f64), ("Steel".into(), 5f64)] .into_iter().collect() }), + ("ItemWaterPipeMeter".into(), Recipe { tier : MachineTier::TierOne, + time : 10f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 3f64)] + .into_iter().collect() }), ("ItemWaterWallCooler".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 3f64), ("Gold".into(), 1f64), ("Iron".into(), 3f64)] .into_iter() + .collect() }) + ] + .into_iter() + .collect(), + }), + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ); + map.insert( + 1441767298i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHydroponicsStation".into(), + prefab_hash: 1441767298i32, + desc: "".into(), + name: "Hydroponics Station".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), + typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ : + Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant }, + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), + typ : Class::Plant } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1464854517i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHydroponicsTray".into(), + prefab_hash: 1464854517i32, + desc: "The Agrizero hydroponics tray is the ideal vessel for growing a range of plantlife. It must be supplied with water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie." + .into(), + name: "Hydroponics Tray".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Fertiliser".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1841632400i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHydroponicsTrayData".into(), + prefab_hash: -1841632400i32, + desc: "The Agrizero hydroponics device is the ideal vessel for growing a range of plantlife. It must be supplied with Water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie. Note that unlike the Hydroponics Tray, these cannot be placed consecutively as they are considered devices rather than pure pipes. They do, however, allow data interrogation for logic systems." + .into(), + name: "Hydroponics Device".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Seeding, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Fertiliser".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 443849486i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureIceCrusher".into(), + prefab_hash: 443849486i32, + desc: "The Recurso KoolAuger converts various ices into their respective gases and liquids.\nA remarkably smart and compact sublimation-melting unit, it produces gas or liquid depending on the ice being processed. The upper outlet is gas, the lower for liquid, and while you can attach any pipe you like to either outlet, it will only function if the correct network is attached. It will also only pass gas or liquid into a network if it is powered and turned on.\nIf the KoolAuger is full, it will not accept any further ice until the gas or liquid contents is drained. In this state, it will flash a yellow error state on the activation switch." + .into(), + name: "Ice Crusher".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::Ore }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1005491513i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureIgniter".into(), + prefab_hash: 1005491513i32, + desc: "It gets the party started. Especially if that party is an explosive gas mixture." + .into(), + name: "Igniter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1693382705i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInLineTankGas1x1".into(), + prefab_hash: -1693382705i32, + desc: "A small expansion tank that increases the volume of a pipe network." + .into(), + name: "In-Line Tank Small Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 35149429i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInLineTankGas1x2".into(), + prefab_hash: 35149429i32, + desc: "A small expansion tank that increases the volume of a pipe network." + .into(), + name: "In-Line Tank Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 543645499i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInLineTankLiquid1x1".into(), + prefab_hash: 543645499i32, + desc: "A small expansion tank that increases the volume of a pipe network." + .into(), + name: "In-Line Tank Small Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1183969663i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInLineTankLiquid1x2".into(), + prefab_hash: -1183969663i32, + desc: "A small expansion tank that increases the volume of a pipe network." + .into(), + name: "In-Line Tank Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1818267386i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedInLineTankGas1x1".into(), + prefab_hash: 1818267386i32, + desc: "".into(), + name: "Insulated In-Line Tank Small Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -177610944i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedInLineTankGas1x2".into(), + prefab_hash: -177610944i32, + desc: "".into(), + name: "Insulated In-Line Tank Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -813426145i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedInLineTankLiquid1x1".into(), + prefab_hash: -813426145i32, + desc: "".into(), + name: "Insulated In-Line Tank Small Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1452100517i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedInLineTankLiquid1x2".into(), + prefab_hash: 1452100517i32, + desc: "".into(), + name: "Insulated In-Line Tank Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1967711059i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCorner".into(), + prefab_hash: -1967711059i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -92778058i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction".into(), + prefab_hash: -92778058i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (Cross Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1328210035i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction3".into(), + prefab_hash: 1328210035i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -783387184i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction4".into(), + prefab_hash: -783387184i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1505147578i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction5".into(), + prefab_hash: -1505147578i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1061164284i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction6".into(), + prefab_hash: 1061164284i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1713710802i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCorner".into(), + prefab_hash: 1713710802i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1926651727i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCrossJunction".into(), + prefab_hash: 1926651727i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 363303270i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCrossJunction4".into(), + prefab_hash: 363303270i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1654694384i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCrossJunction5".into(), + prefab_hash: 1654694384i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -72748982i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCrossJunction6".into(), + prefab_hash: -72748982i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 295678685i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidStraight".into(), + prefab_hash: 295678685i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -532384855i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidTJunction".into(), + prefab_hash: -532384855i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (T Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2134172356i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeStraight".into(), + prefab_hash: 2134172356i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2076086215i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeTJunction".into(), + prefab_hash: -2076086215i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (T Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -31273349i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedTankConnector".into(), + prefab_hash: -31273349i32, + desc: "".into(), + name: "Insulated Tank Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1602030414i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedTankConnectorLiquid".into(), + prefab_hash: -1602030414i32, + desc: "".into(), + name: "Insulated Tank Connector Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Portable Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -2096421875i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInteriorDoorGlass".into(), + prefab_hash: -2096421875i32, + desc: "0.Operate\n1.Logic".into(), + name: "Interior Door Glass".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 847461335i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInteriorDoorPadded".into(), + prefab_hash: 847461335i32, + desc: "0.Operate\n1.Logic".into(), + name: "Interior Door Padded".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1981698201i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInteriorDoorPaddedThin".into(), + prefab_hash: 1981698201i32, + desc: "0.Operate\n1.Logic".into(), + name: "Interior Door Padded Thin".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1182923101i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInteriorDoorTriangle".into(), + prefab_hash: -1182923101i32, + desc: "0.Operate\n1.Logic".into(), + name: "Interior Door Triangle".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -828056979i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureKlaxon".into(), + prefab_hash: -828056979i32, + desc: "Klaxons allow you to play over 50 announcements and sounds, depending on your Logic set-up. Set the mode to select the output." + .into(), + name: "Klaxon Speaker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "None".into()), (1u32, "Alarm2".into()), (2u32, "Alarm3" + .into()), (3u32, "Alarm4".into()), (4u32, "Alarm5".into()), + (5u32, "Alarm6".into()), (6u32, "Alarm7".into()), (7u32, "Music1" + .into()), (8u32, "Music2".into()), (9u32, "Music3".into()), + (10u32, "Alarm8".into()), (11u32, "Alarm9".into()), (12u32, + "Alarm10".into()), (13u32, "Alarm11".into()), (14u32, "Alarm12" + .into()), (15u32, "Danger".into()), (16u32, "Warning".into()), + (17u32, "Alert".into()), (18u32, "StormIncoming".into()), (19u32, + "IntruderAlert".into()), (20u32, "Depressurising".into()), + (21u32, "Pressurising".into()), (22u32, "AirlockCycling".into()), + (23u32, "PowerLow".into()), (24u32, "SystemFailure".into()), + (25u32, "Welcome".into()), (26u32, "MalfunctionDetected".into()), + (27u32, "HaltWhoGoesThere".into()), (28u32, "FireFireFire" + .into()), (29u32, "One".into()), (30u32, "Two".into()), (31u32, + "Three".into()), (32u32, "Four".into()), (33u32, "Five".into()), + (34u32, "Floor".into()), (35u32, "RocketLaunching".into()), + (36u32, "LiftOff".into()), (37u32, "TraderIncoming".into()), + (38u32, "TraderLanded".into()), (39u32, "PressureHigh".into()), + (40u32, "PressureLow".into()), (41u32, "TemperatureHigh".into()), + (42u32, "TemperatureLow".into()), (43u32, "PollutantsDetected" + .into()), (44u32, "HighCarbonDioxide".into()), (45u32, "Alarm1" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -415420281i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLadder".into(), + prefab_hash: -415420281i32, + desc: "".into(), + name: "Ladder".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1541734993i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLadderEnd".into(), + prefab_hash: 1541734993i32, + desc: "".into(), + name: "Ladder End".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1230658883i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeDirectHeatExchangeGastoGas".into(), + prefab_hash: -1230658883i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Large Direct Heat Exchanger - Gas + Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1412338038i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeDirectHeatExchangeGastoLiquid".into(), + prefab_hash: 1412338038i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Large Direct Heat Exchanger - Gas + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 792686502i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeDirectHeatExchangeLiquidtoLiquid".into(), + prefab_hash: 792686502i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Large Direct Heat Exchange - Liquid + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -566775170i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeExtendableRadiator".into(), + prefab_hash: -566775170i32, + desc: "Omptimised for radiating heat in vacuum and low pressure environments. If pointed at the sun it will heat its contents rapidly via solar heating. The panels can fold away to stop all heat radiation/solar heating and protect them from storms." + .into(), + name: "Large Extendable Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.02f32, + radiation_factor: 2f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1351081801i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeHangerDoor".into(), + prefab_hash: -1351081801i32, + desc: "1 x 3 modular door piece for building hangar doors.".into(), + name: "Large Hangar Door".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1913391845i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeSatelliteDish".into(), + prefab_hash: 1913391845i32, + desc: "This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic." + .into(), + name: "Large Satellite Dish".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Horizontal, MemoryAccess::ReadWrite), + (LogicType::Vertical, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SignalStrength, MemoryAccess::Read), + (LogicType::SignalId, MemoryAccess::Read), + (LogicType::InterrogationProgress, MemoryAccess::Read), + (LogicType::TargetPadIndex, MemoryAccess::ReadWrite), + (LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ, + MemoryAccess::Read), (LogicType::MinimumWattsToContact, + MemoryAccess::Read), (LogicType::WattsReachingContact, + MemoryAccess::Read), (LogicType::ContactTypeId, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::BestContactFilter, MemoryAccess::ReadWrite), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -558953231i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLaunchMount".into(), + prefab_hash: -558953231i32, + desc: "The first piece to place whern building a rocket. Rockets can be constructed and/or landed here. Each Launch Mount will be allocated a slot on the Space Map and assigned a Location Code." + .into(), + name: "Launch Mount".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 797794350i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightLong".into(), + prefab_hash: 797794350i32, + desc: "".into(), + name: "Wall Light (Long)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1847265835i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightLongAngled".into(), + prefab_hash: 1847265835i32, + desc: "".into(), + name: "Wall Light (Long Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 555215790i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightLongWide".into(), + prefab_hash: 555215790i32, + desc: "".into(), + name: "Wall Light (Long Wide)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1514476632i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightRound".into(), + prefab_hash: 1514476632i32, + desc: "Description coming.".into(), + name: "Light Round".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1592905386i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightRoundAngled".into(), + prefab_hash: 1592905386i32, + desc: "Description coming.".into(), + name: "Light Round (Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1436121888i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightRoundSmall".into(), + prefab_hash: 1436121888i32, + desc: "Description coming.".into(), + name: "Light Round (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1687692899i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidDrain".into(), + prefab_hash: 1687692899i32, + desc: "When connected to power and activated, it pumps liquid from a liquid network into the world." + .into(), + name: "Active Liquid Outlet".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2113838091i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPipeAnalyzer".into(), + prefab_hash: -2113838091i32, + desc: "".into(), + name: "Liquid Pipe Analyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -287495560i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPipeHeater".into(), + prefab_hash: -287495560i32, + desc: "Adds 1000 joules of heat per tick to the contents of your pipe network." + .into(), + name: "Pipe Heater (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -782453061i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPipeOneWayValve".into(), + prefab_hash: -782453061i32, + desc: "The one way valve moves liquid in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.." + .into(), + name: "One Way Valve (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2072805863i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPipeRadiator".into(), + prefab_hash: 2072805863i32, + desc: "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added to the liquid within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the liquid in question. Adding multiple radiators will speed up heat transfer." + .into(), + name: "Liquid Pipe Convection Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 1f32, + radiation_factor: 0.75f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 482248766i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPressureRegulator".into(), + prefab_hash: 482248766i32, + desc: "Regulates the volume ratio of liquid in the output Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty." + .into(), + name: "Liquid Volume Regulator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1098900430i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankBig".into(), + prefab_hash: 1098900430i32, + desc: "".into(), + name: "Liquid Tank Big".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1430440215i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankBigInsulated".into(), + prefab_hash: -1430440215i32, + desc: "".into(), + name: "Insulated Liquid Tank Big".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1988118157i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankSmall".into(), + prefab_hash: 1988118157i32, + desc: "".into(), + name: "Liquid Tank Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 608607718i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankSmallInsulated".into(), + prefab_hash: 608607718i32, + desc: "".into(), + name: "Insulated Liquid Tank Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1691898022i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankStorage".into(), + prefab_hash: 1691898022i32, + desc: "When connected to a liquid pipe network, the tank storage unit allows you to refill a Liquid Canister, as well as read various atmospheric data from the Gas Canister. It will not accept gas canisters." + .into(), + name: "Liquid Tank Storage".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Quantity, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1051805505i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTurboVolumePump".into(), + prefab_hash: -1051805505i32, + desc: "Shifts 10 times more liquid than a basic Volume Pump, with a mode that can be set to flow in either direction." + .into(), + name: "Turbo Volume Pump (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Right".into()), (1u32, "Left".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1734723642i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidUmbilicalFemale".into(), + prefab_hash: 1734723642i32, + desc: "".into(), + name: "Umbilical Socket (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1220870319i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidUmbilicalFemaleSide".into(), + prefab_hash: 1220870319i32, + desc: "".into(), + name: "Umbilical Socket Angle (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1798420047i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidUmbilicalMale".into(), + prefab_hash: -1798420047i32, + desc: "0.Left\n1.Center\n2.Right".into(), + name: "Umbilical (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1849974453i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidValve".into(), + prefab_hash: 1849974453i32, + desc: "".into(), + name: "Liquid Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -454028979i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidVolumePump".into(), + prefab_hash: -454028979i32, + desc: "".into(), + name: "Liquid Volume Pump".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -647164662i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLockerSmall".into(), + prefab_hash: -647164662i32, + desc: "".into(), + name: "Locker (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 264413729i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicBatchReader".into(), + prefab_hash: 264413729i32, + desc: "".into(), + name: "Batch Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 436888930i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicBatchSlotReader".into(), + prefab_hash: 436888930i32, + desc: "".into(), + name: "Batch Slot Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1415443359i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicBatchWriter".into(), + prefab_hash: 1415443359i32, + desc: "".into(), + name: "Batch Writer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ForceWrite, + MemoryAccess::Write), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 491845673i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicButton".into(), + prefab_hash: 491845673i32, + desc: "".into(), + name: "Button".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1489728908i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicCompare".into(), + prefab_hash: -1489728908i32, + desc: "0.Equals\n1.Greater\n2.Less\n3.NotEquals".into(), + name: "Logic Compare".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, "Less" + .into()), (3u32, "NotEquals".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 554524804i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicDial".into(), + prefab_hash: 554524804i32, + desc: "An assignable dial with up to 1000 modes.".into(), + name: "Dial".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1942143074i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicGate".into(), + prefab_hash: 1942143074i32, + desc: "A logic device that performs a logical operation on one or more binary inputs that produces a single binary output. An input greater than zero is considered true for operations." + .into(), + name: "Logic Gate".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "AND".into()), (1u32, "OR".into()), (2u32, "XOR".into()), + (3u32, "NAND".into()), (4u32, "NOR".into()), (5u32, "XNOR" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2077593121i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicHashGen".into(), + prefab_hash: 2077593121i32, + desc: "".into(), + name: "Logic Hash Generator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1657691323i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMath".into(), + prefab_hash: 1657691323i32, + desc: "0.Add\n1.Subtract\n2.Multiply\n3.Divide\n4.Mod\n5.Atan2\n6.Pow\n7.Log" + .into(), + name: "Logic Math".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Add".into()), (1u32, "Subtract".into()), (2u32, + "Multiply".into()), (3u32, "Divide".into()), (4u32, "Mod" + .into()), (5u32, "Atan2".into()), (6u32, "Pow".into()), (7u32, + "Log".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1160020195i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMathUnary".into(), + prefab_hash: -1160020195i32, + desc: "0.Ceil\n1.Floor\n2.Abs\n3.Log\n4.Exp\n5.Round\n6.Rand\n7.Sqrt\n8.Sin\n9.Cos\n10.Tan\n11.Asin\n12.Acos\n13.Atan\n14.Not" + .into(), + name: "Math Unary".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Ceil".into()), (1u32, "Floor".into()), (2u32, "Abs" + .into()), (3u32, "Log".into()), (4u32, "Exp".into()), (5u32, + "Round".into()), (6u32, "Rand".into()), (7u32, "Sqrt".into()), + (8u32, "Sin".into()), (9u32, "Cos".into()), (10u32, "Tan" + .into()), (11u32, "Asin".into()), (12u32, "Acos".into()), (13u32, + "Atan".into()), (14u32, "Not".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -851746783i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMemory".into(), + prefab_hash: -851746783i32, + desc: "".into(), + name: "Logic Memory".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 929022276i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMinMax".into(), + prefab_hash: 929022276i32, + desc: "0.Greater\n1.Less".into(), + name: "Logic Min/Max".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Greater".into()), (1u32, "Less".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2096189278i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMirror".into(), + prefab_hash: 2096189278i32, + desc: "".into(), + name: "Logic Mirror".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![].into_iter().collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -345383640i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicReader".into(), + prefab_hash: -345383640i32, + desc: "".into(), + name: "Logic Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -124308857i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicReagentReader".into(), + prefab_hash: -124308857i32, + desc: "".into(), + name: "Reagent Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 876108549i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicRocketDownlink".into(), + prefab_hash: 876108549i32, + desc: "".into(), + name: "Logic Rocket Downlink".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 546002924i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicRocketUplink".into(), + prefab_hash: 546002924i32, + desc: "".into(), + name: "Logic Uplink".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1822736084i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSelect".into(), + prefab_hash: 1822736084i32, + desc: "0.Equals\n1.Greater\n2.Less\n3.NotEquals".into(), + name: "Logic Select".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, "Less" + .into()), (3u32, "NotEquals".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -767867194i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSlotReader".into(), + prefab_hash: -767867194i32, + desc: "".into(), + name: "Slot Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 873418029i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSorter".into(), + prefab_hash: 873418029i32, + desc: "Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the Import Slot, the stack is checked and if result is true the thing is moved to the Export 2 slot, otherwise it is moved to the Export slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true." + .into(), + name: "Logic Sorter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "All".into()), (1u32, "Any".into()), (2u32, "None".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None }, SlotInfo { name : "Export 2" + .into(), typ : Class::None }, SlotInfo { name : "Data Disk".into(), typ : + Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output2 }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("FilterPrefabHashEquals".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "SorterInstruction".into(), value : 1i64 }), + ("FilterPrefabHashNotEquals".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "SorterInstruction".into(), value : 2i64 }), + ("FilterQuantityCompare".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | QUANTITY | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |" + .into(), typ : "SorterInstruction".into(), value : 5i64 }), + ("FilterSlotTypeCompare".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SLOT_TYPE | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |" + .into(), typ : "SorterInstruction".into(), value : 4i64 }), + ("FilterSortingClassCompare".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SORTING_CLASS | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |" + .into(), typ : "SorterInstruction".into(), value : 3i64 }), + ("LimitNextExecutionByCount".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | COUNT | UINT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "SorterInstruction".into(), value : 6i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 32u32, + }, + } + .into(), + ); + map.insert( + 1220484876i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSwitch".into(), + prefab_hash: 1220484876i32, + desc: "".into(), + name: "Lever".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 321604921i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSwitch2".into(), + prefab_hash: 321604921i32, + desc: "".into(), + name: "Switch".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -693235651i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicTransmitter".into(), + prefab_hash: -693235651i32, + desc: "Connects to Logic Transmitter" + .into(), + name: "Logic Transmitter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![].into_iter().collect(), + modes: Some( + vec![(0u32, "Passive".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: true, + wireless_logic: true, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1326019434i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicWriter".into(), + prefab_hash: -1326019434i32, + desc: "".into(), + name: "Logic Writer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ForceWrite, + MemoryAccess::Write), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1321250424i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicWriterSwitch".into(), + prefab_hash: -1321250424i32, + desc: "".into(), + name: "Logic Writer Switch".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ForceWrite, MemoryAccess::Write), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1808154199i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureManualHatch".into(), + prefab_hash: -1808154199i32, + desc: "Can be welded using a Welding Torch or Arc Welder to lock it in the current state. Use the welder again to unlock." + .into(), + name: "Manual Hatch".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1918215845i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumConvectionRadiator".into(), + prefab_hash: -1918215845i32, + desc: "A stand-alone radiator unit optimized for exchanging heat with its surrounding atmosphere." + .into(), + name: "Medium Convection Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 1.25f32, + radiation_factor: 0.4f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1169014183i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumConvectionRadiatorLiquid".into(), + prefab_hash: -1169014183i32, + desc: "A stand-alone liquid radiator unit optimized for exchanging heat with its surrounding atmosphere." + .into(), + name: "Medium Convection Radiator Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 1.25f32, + radiation_factor: 0.4f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -566348148i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumHangerDoor".into(), + prefab_hash: -566348148i32, + desc: "1 x 2 modular door piece for building hangar doors.".into(), + name: "Medium Hangar Door".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -975966237i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumRadiator".into(), + prefab_hash: -975966237i32, + desc: "A stand-alone radiator unit optimized for radiating heat in vacuums." + .into(), + name: "Medium Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.2f32, + radiation_factor: 4f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1141760613i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumRadiatorLiquid".into(), + prefab_hash: -1141760613i32, + desc: "A stand-alone liquid radiator unit optimized for radiating heat in vacuums." + .into(), + name: "Medium Radiator Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.2f32, + radiation_factor: 4f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1093860567i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumRocketGasFuelTank".into(), + prefab_hash: -1093860567i32, + desc: "".into(), + name: "Gas Capsule Tank Medium".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1143639539i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumRocketLiquidFuelTank".into(), + prefab_hash: 1143639539i32, + desc: "".into(), + name: "Liquid Capsule Tank Medium".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1713470563i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMotionSensor".into(), + prefab_hash: -1713470563i32, + desc: "Originally developed to monitor dance marathons, the motion sensor can also be connected to Logic systems for security purposes, automatic lighting, doors and various other applications.\nThe sensor activates whenever a player enters the grid it is placed on." + .into(), + name: "Motion Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1898243702i32, + StructureCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "StructureNitrolyzer".into(), + prefab_hash: 1898243702i32, + desc: "This device is used to create Nitrous Oxide from Oxygen, Nitrogen, and a large amount of energy. The process does not completely transform all the available gas at once, so the output is a mix of all three gasses, which may need further processing. More NOS will be created, if the gas inside the machine is close to a 1/1 ratio of Oxygen to Nitrogen. The second gas input line in optional, and not required if the gas is pre mixed." + .into(), + name: "Nitrolyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureInput2, MemoryAccess::Read), + (LogicType::TemperatureInput2, MemoryAccess::Read), + (LogicType::RatioOxygenInput2, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput2, MemoryAccess::Read), + (LogicType::RatioNitrogenInput2, MemoryAccess::Read), + (LogicType::RatioPollutantInput2, MemoryAccess::Read), + (LogicType::RatioVolatilesInput2, MemoryAccess::Read), + (LogicType::RatioWaterInput2, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput2, MemoryAccess::Read), + (LogicType::TotalMolesInput2, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionInput2, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput2, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput2, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput2, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamInput2, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput2, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput2, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput2, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 322782515i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureOccupancySensor".into(), + prefab_hash: 322782515i32, + desc: "Will be triggered if there is a player in the same room as the sensor. The quantity variable will show the number of players. You can use configure it to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet. This sensor only works when placed in a room." + .into(), + name: "Occupancy Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::Read), (LogicType::Quantity, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1794932560i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureOverheadShortCornerLocker".into(), + prefab_hash: -1794932560i32, + desc: "".into(), + name: "Overhead Corner Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1468249454i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureOverheadShortLocker".into(), + prefab_hash: 1468249454i32, + desc: "".into(), + name: "Overhead Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2066977095i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveLargeRadiatorGas".into(), + prefab_hash: 2066977095i32, + desc: "Has been replaced by Medium Convection Radiator." + .into(), + name: "Medium Convection Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 1f32, + radiation_factor: 0.4f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 24786172i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveLargeRadiatorLiquid".into(), + prefab_hash: 24786172i32, + desc: "Has been replaced by Medium Convection Radiator Liquid." + .into(), + name: "Medium Convection Radiator Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 1f32, + radiation_factor: 0.4f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1812364811i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveLiquidDrain".into(), + prefab_hash: 1812364811i32, + desc: "Moves liquids from a pipe network to the world atmosphere." + .into(), + name: "Passive Liquid Drain".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 335498166i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveVent".into(), + prefab_hash: 335498166i32, + desc: "Passive vents allow gases to move into and out of pipe networks, which are closed systems unless connected to a device or structure. Passive vents are not powered, merely an aperture, essentially turning an enclosed space into part of the pipe network. " + .into(), + name: "Passive Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1363077139i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveVentInsulated".into(), + prefab_hash: 1363077139i32, + desc: "".into(), + name: "Insulated Passive Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1674187440i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassthroughHeatExchangerGasToGas".into(), + prefab_hash: -1674187440i32, + desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures." + .into(), + name: "CounterFlow Heat Exchanger - Gas + Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input2 }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1928991265i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassthroughHeatExchangerGasToLiquid".into(), + prefab_hash: 1928991265i32, + desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures." + .into(), + name: "CounterFlow Heat Exchanger - Gas + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1472829583i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassthroughHeatExchangerLiquidToLiquid".into(), + prefab_hash: -1472829583i32, + desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exchange of temperatures." + .into(), + name: "CounterFlow Heat Exchanger - Liquid + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1434523206i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickLandscapeLarge".into(), + prefab_hash: -1434523206i32, + desc: "".into(), + name: "Picture Frame Thick Landscape Large".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2041566697i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickLandscapeSmall".into(), + prefab_hash: -2041566697i32, + desc: "".into(), + name: "Picture Frame Thick Landscape Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 950004659i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickMountLandscapeLarge".into(), + prefab_hash: 950004659i32, + desc: "".into(), + name: "Picture Frame Thick Landscape Large".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 347154462i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickMountLandscapeSmall".into(), + prefab_hash: 347154462i32, + desc: "".into(), + name: "Picture Frame Thick Landscape Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1459641358i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickMountPortraitLarge".into(), + prefab_hash: -1459641358i32, + desc: "".into(), + name: "Picture Frame Thick Mount Portrait Large".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2066653089i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickMountPortraitSmall".into(), + prefab_hash: -2066653089i32, + desc: "".into(), + name: "Picture Frame Thick Mount Portrait Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1686949570i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickPortraitLarge".into(), + prefab_hash: -1686949570i32, + desc: "".into(), + name: "Picture Frame Thick Portrait Large".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1218579821i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickPortraitSmall".into(), + prefab_hash: -1218579821i32, + desc: "".into(), + name: "Picture Frame Thick Portrait Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1418288625i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinLandscapeLarge".into(), + prefab_hash: -1418288625i32, + desc: "".into(), + name: "Picture Frame Thin Landscape Large".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2024250974i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinLandscapeSmall".into(), + prefab_hash: -2024250974i32, + desc: "".into(), + name: "Picture Frame Thin Landscape Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1146760430i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinMountLandscapeLarge".into(), + prefab_hash: -1146760430i32, + desc: "".into(), + name: "Picture Frame Thin Landscape Large".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1752493889i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinMountLandscapeSmall".into(), + prefab_hash: -1752493889i32, + desc: "".into(), + name: "Picture Frame Thin Landscape Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1094895077i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinMountPortraitLarge".into(), + prefab_hash: 1094895077i32, + desc: "".into(), + name: "Picture Frame Thin Portrait Large".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1835796040i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinMountPortraitSmall".into(), + prefab_hash: 1835796040i32, + desc: "".into(), + name: "Picture Frame Thin Portrait Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1212777087i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinPortraitLarge".into(), + prefab_hash: 1212777087i32, + desc: "".into(), + name: "Picture Frame Thin Portrait Large".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1684488658i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinPortraitSmall".into(), + prefab_hash: 1684488658i32, + desc: "".into(), + name: "Picture Frame Thin Portrait Small".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 435685051i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeAnalysizer".into(), + prefab_hash: 435685051i32, + desc: "Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {ExMin engineer, the pipe analyzer is essentially a more advanced version of the Pipe Meter.\nDisplaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a Console or Computer via a {Logic system." + .into(), + name: "Pipe Analyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1785673561i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCorner".into(), + prefab_hash: -1785673561i32, + desc: "You can upgrade this pipe to an Insulated Pipe (Corner) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 465816159i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCowl".into(), + prefab_hash: 465816159i32, + desc: "".into(), + name: "Pipe Cowl".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1405295588i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction".into(), + prefab_hash: -1405295588i32, + desc: "You can upgrade this pipe to an Insulated Pipe (Cross Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (Cross Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2038427184i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction3".into(), + prefab_hash: 2038427184i32, + desc: "You can upgrade this pipe to an Insulated Pipe (3-Way Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -417629293i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction4".into(), + prefab_hash: -417629293i32, + desc: "You can upgrade this pipe to an Insulated Pipe (4-Way Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1877193979i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction5".into(), + prefab_hash: -1877193979i32, + desc: "You can upgrade this pipe to an Insulated Pipe (5-Way Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 152378047i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction6".into(), + prefab_hash: 152378047i32, + desc: "You can upgrade this pipe to an Insulated Pipe (6-Way Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -419758574i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeHeater".into(), + prefab_hash: -419758574i32, + desc: "Adds 1000 joules of heat per tick to the contents of your pipe network." + .into(), + name: "Pipe Heater (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1286441942i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeIgniter".into(), + prefab_hash: 1286441942i32, + desc: "Ignites the atmosphere inside the attached pipe network.".into(), + name: "Pipe Igniter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2068497073i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeInsulatedLiquidCrossJunction".into(), + prefab_hash: -2068497073i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (Cross Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -999721119i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLabel".into(), + prefab_hash: -999721119i32, + desc: "As its perspicacious name suggests, the pipe label is designed to be attached to a straight stretch of pipe. Users can then label the label with the Labeller." + .into(), + name: "Pipe Label".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1856720921i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCorner".into(), + prefab_hash: -1856720921i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (Corner) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1848735691i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction".into(), + prefab_hash: 1848735691i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (Cross Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (Cross Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1628087508i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction3".into(), + prefab_hash: 1628087508i32, + desc: "You can upgrade this pipe to an using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -9555593i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction4".into(), + prefab_hash: -9555593i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (4-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2006384159i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction5".into(), + prefab_hash: -2006384159i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (5-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 291524699i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction6".into(), + prefab_hash: 291524699i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (6-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 667597982i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidStraight".into(), + prefab_hash: 667597982i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (Straight) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 262616717i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidTJunction".into(), + prefab_hash: 262616717i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (T Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (T Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1798362329i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeMeter".into(), + prefab_hash: -1798362329i32, + desc: "While the Stationeers program has, thus far, inspired little in the way of classical poetry, the following haiku was found etched, ironically, on a piece of pipe wreckage found on Vulcan:\n\"Humble pipe meter\nspeaks the truth, transmits pressure\nwithin any pipe\"" + .into(), + name: "Pipe Meter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1580412404i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeOneWayValve".into(), + prefab_hash: 1580412404i32, + desc: "The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.\n" + .into(), + name: "One Way Valve (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1305252611i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeOrgan".into(), + prefab_hash: 1305252611i32, + desc: "The pipe organ can be attached to one end of a Kit (Pipe Valve). The length of the pipe after the pipe organ changes the pitch of the note it will play when the valve is opened. Use Logic to open and close the valves to create some custom tunes for your base or an audible warning." + .into(), + name: "Pipe Organ".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1696603168i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeRadiator".into(), + prefab_hash: 1696603168i32, + desc: "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added the gas within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the gas in question. Adding multiple radiators will speed up heat transfer." + .into(), + name: "Pipe Convection Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 1f32, + radiation_factor: 0.75f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -399883995i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeRadiatorFlat".into(), + prefab_hash: -399883995i32, + desc: "A pipe mounted radiator optimized for radiating heat in vacuums." + .into(), + name: "Pipe Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.2f32, + radiation_factor: 3f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2024754523i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeRadiatorFlatLiquid".into(), + prefab_hash: 2024754523i32, + desc: "A liquid pipe mounted radiator optimized for radiating heat in vacuums." + .into(), + name: "Pipe Radiator Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.2f32, + radiation_factor: 3f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 73728932i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeStraight".into(), + prefab_hash: 73728932i32, + desc: "You can upgrade this pipe to an Insulated Pipe (Straight) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -913817472i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeTJunction".into(), + prefab_hash: -913817472i32, + desc: "You can upgrade this pipe to an Insulated Pipe (T Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (T Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1125641329i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePlanter".into(), + prefab_hash: -1125641329i32, + desc: "A small planter for decorative or hydroponic purposes. Can be connected to Water, or watered manually using a Water Bottle or Liquid Canister (Water)." + .into(), + name: "Planter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1559586682i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePlatformLadderOpen".into(), + prefab_hash: 1559586682i32, + desc: "".into(), + name: "Ladder Platform".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 989835703i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePlinth".into(), + prefab_hash: 989835703i32, + desc: "".into(), + name: "Plinth".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![SlotInfo { name : "".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -899013427i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePortablesConnector".into(), + prefab_hash: -899013427i32, + desc: "".into(), + name: "Portables Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -782951720i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerConnector".into(), + prefab_hash: -782951720i32, + desc: "Attaches a Kit (Portable Generator) to a power network." + .into(), + name: "Power Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Portable Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -65087121i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerTransmitter".into(), + prefab_hash: -65087121i32, + desc: "The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter\'s collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output." + .into(), + name: "Microwave Power Transmitter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::PowerPotential, + MemoryAccess::Read), (LogicType::PowerActual, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PositionX, MemoryAccess::Read), + (LogicType::PositionY, MemoryAccess::Read), (LogicType::PositionZ, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -327468845i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerTransmitterOmni".into(), + prefab_hash: -327468845i32, + desc: "".into(), + name: "Power Transmitter Omni".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1195820278i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerTransmitterReceiver".into(), + prefab_hash: 1195820278i32, + desc: "The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter\'s collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.Connects to Logic Transmitter" + .into(), + name: "Microwave Power Receiver".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::PowerPotential, + MemoryAccess::Read), (LogicType::PowerActual, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PositionX, MemoryAccess::Read), + (LogicType::PositionY, MemoryAccess::Read), (LogicType::PositionZ, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: true, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 101488029i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerUmbilicalFemale".into(), + prefab_hash: 101488029i32, + desc: "".into(), + name: "Umbilical Socket (Power)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1922506192i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerUmbilicalFemaleSide".into(), + prefab_hash: 1922506192i32, + desc: "".into(), + name: "Umbilical Socket Angle (Power)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1529453938i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerUmbilicalMale".into(), + prefab_hash: 1529453938i32, + desc: "0.Left\n1.Center\n2.Right".into(), + name: "Umbilical (Power)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 938836756i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePoweredVent".into(), + prefab_hash: 938836756i32, + desc: "Great for moving large quantities of air into a pipe network. Its primary purpose is for the creation of multi-grid airlocks. It can effeciently pull a vacuum on a small to medium sized room." + .into(), + name: "Powered Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::PressureExternal, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Outward".into()), (1u32, "Inward".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -785498334i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePoweredVentLarge".into(), + prefab_hash: -785498334i32, + desc: "For building large scale airlock systems and pressurised hangers, a bigger and bolder version of the Powered Vent that can effeciently pull a vacuum in large room." + .into(), + name: "Powered Vent Large".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::PressureExternal, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Outward".into()), (1u32, "Inward".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 23052817i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressurantValve".into(), + prefab_hash: 23052817i32, + desc: "Pumps gas into a liquid pipe in order to raise the pressure" + .into(), + name: "Pressurant Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -624011170i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressureFedGasEngine".into(), + prefab_hash: -624011170i32, + desc: "Inefficient but very powerful, the Pressure Fed Gas Engine moves gas from each of its two inputs based on the pressure of the input pipes. Control the mixing ratio of fuels by tweaking the input pressures to target a 2:1 mix of Volatiles to Oxygen gas. Chilling propellant gasses or using Nitrous Oxide as an oxydizer will result in even higher thrust outputs." + .into(), + name: "Pressure Fed Gas Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::Throttle, MemoryAccess::ReadWrite), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::PassedMoles, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input2 }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 379750958i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressureFedLiquidEngine".into(), + prefab_hash: 379750958i32, + desc: "Highly efficient and powerful, the Pressure Fed Liquid Engine is a challenging engine to run in a stable configuration. Liquid is pulled from the input into the engine based on the input gas pressure. Some gas is also moved in this process so Stationeers will need to devise a system to maintain a high gas pressure in the liquid input pipe. The second liquid pipe connection is an optional heat-exchanger connection which exchanges heat between the pipes contents and the engine bell, the Setting variable drives the effectiveness of the heat-exchanger." + .into(), + name: "Pressure Fed Liquid Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::Throttle, MemoryAccess::ReadWrite), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::PassedMoles, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2008706143i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressurePlateLarge".into(), + prefab_hash: -2008706143i32, + desc: "".into(), + name: "Trigger Plate (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1269458680i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressurePlateMedium".into(), + prefab_hash: 1269458680i32, + desc: "".into(), + name: "Trigger Plate (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1536471028i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressurePlateSmall".into(), + prefab_hash: -1536471028i32, + desc: "".into(), + name: "Trigger Plate (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 209854039i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressureRegulator".into(), + prefab_hash: 209854039i32, + desc: "Controlling the flow of gas between two pipe networks, pressure regulators shift gas until a set pressure on the outlet side is achieved, or the gas supply is exhausted. The back pressure regulator, by contrast, will only operate when pressure on the intake side exceeds the set value. With a max pressure of over 20,000kPa, it requires power to operate." + .into(), + name: "Pressure Regulator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 568800213i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureProximitySensor".into(), + prefab_hash: 568800213i32, + desc: "Will be triggered if there is a player in the range of the sensor (as defined by the setting dial). The quantity variable will show the number of players. You can configure the sensor to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet." + .into(), + name: "Proximity Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Quantity, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2031440019i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePumpedLiquidEngine".into(), + prefab_hash: -2031440019i32, + desc: "Liquid propellants bring greater efficiencies with Pumped Liquid Engine. Two inputs are provided so Stationeers can seperate their fuels, the Setting variable controls the mixing ratio of the inputs. The engine is designed to run on Liquid Volatiles and Liquid Oxygen, some Stationeers have reported excessive thrust values by switching to Liquid Nitrous Oxide" + .into(), + name: "Pumped Liquid Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::Throttle, MemoryAccess::ReadWrite), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::PassedMoles, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -737232128i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePurgeValve".into(), + prefab_hash: -737232128i32, + desc: "Allows for removal of pressurant gas and evaporated liquids from a liquid pipe. Similar in function to a Back Pressure Regulator the Purge Valve moves gas from the input liquid pipe to the output gas pipe aiming to keep the pressure of the input at the target setting." + .into(), + name: "Purge Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1756913871i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRailing".into(), + prefab_hash: -1756913871i32, + desc: "\"Safety third.\"".into(), + name: "Railing Industrial (Type 1)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1633947337i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRecycler".into(), + prefab_hash: -1633947337i32, + desc: "A device for collecting the raw resources while destroying an item. Produces Reagent Mix containing packages of reagents. Pass these through the Centrifuge to gain back the source ores. Plants and organic matter passed through will create Biomass, which when passed through the Centrifuge will produce Biomass." + .into(), + name: "Recycler".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Reagents, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: true, + }, + } + .into(), + ); + map.insert( + -1577831321i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRefrigeratedVendingMachine".into(), + prefab_hash: -1577831321i32, + desc: "The refrigerated OmniKool vending machine is an advanced version of the standard Vending Machine, which maintains an optimum pressure and constant temperature of -130 degrees C, to prevent food spoilage. It can hold up to 100 stacks.\nThe OmniKool also has an in-built Stacker, allowing players to set the stack sizes of any items ADDED to the device. The unit\'s default stack size is 50.\nNOTE: altering stack sizes DOES NOT update existing stacks within the machine, only those subsequently added. " + .into(), + name: "Refrigerated Vending Machine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![] + .into_iter().collect()), (4u32, vec![] .into_iter().collect()), + (5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter() + .collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![] + .into_iter().collect()), (9u32, vec![] .into_iter().collect()), + (10u32, vec![] .into_iter().collect()), (11u32, vec![] .into_iter() + .collect()), (12u32, vec![] .into_iter().collect()), (13u32, vec![] + .into_iter().collect()), (14u32, vec![] .into_iter().collect()), + (15u32, vec![] .into_iter().collect()), (16u32, vec![] .into_iter() + .collect()), (17u32, vec![] .into_iter().collect()), (18u32, vec![] + .into_iter().collect()), (19u32, vec![] .into_iter().collect()), + (20u32, vec![] .into_iter().collect()), (21u32, vec![] .into_iter() + .collect()), (22u32, vec![] .into_iter().collect()), (23u32, vec![] + .into_iter().collect()), (24u32, vec![] .into_iter().collect()), + (25u32, vec![] .into_iter().collect()), (26u32, vec![] .into_iter() + .collect()), (27u32, vec![] .into_iter().collect()), (28u32, vec![] + .into_iter().collect()), (29u32, vec![] .into_iter().collect()), + (30u32, vec![] .into_iter().collect()), (31u32, vec![] .into_iter() + .collect()), (32u32, vec![] .into_iter().collect()), (33u32, vec![] + .into_iter().collect()), (34u32, vec![] .into_iter().collect()), + (35u32, vec![] .into_iter().collect()), (36u32, vec![] .into_iter() + .collect()), (37u32, vec![] .into_iter().collect()), (38u32, vec![] + .into_iter().collect()), (39u32, vec![] .into_iter().collect()), + (40u32, vec![] .into_iter().collect()), (41u32, vec![] .into_iter() + .collect()), (42u32, vec![] .into_iter().collect()), (43u32, vec![] + .into_iter().collect()), (44u32, vec![] .into_iter().collect()), + (45u32, vec![] .into_iter().collect()), (46u32, vec![] .into_iter() + .collect()), (47u32, vec![] .into_iter().collect()), (48u32, vec![] + .into_iter().collect()), (49u32, vec![] .into_iter().collect()), + (50u32, vec![] .into_iter().collect()), (51u32, vec![] .into_iter() + .collect()), (52u32, vec![] .into_iter().collect()), (53u32, vec![] + .into_iter().collect()), (54u32, vec![] .into_iter().collect()), + (55u32, vec![] .into_iter().collect()), (56u32, vec![] .into_iter() + .collect()), (57u32, vec![] .into_iter().collect()), (58u32, vec![] + .into_iter().collect()), (59u32, vec![] .into_iter().collect()), + (60u32, vec![] .into_iter().collect()), (61u32, vec![] .into_iter() + .collect()), (62u32, vec![] .into_iter().collect()), (63u32, vec![] + .into_iter().collect()), (64u32, vec![] .into_iter().collect()), + (65u32, vec![] .into_iter().collect()), (66u32, vec![] .into_iter() + .collect()), (67u32, vec![] .into_iter().collect()), (68u32, vec![] + .into_iter().collect()), (69u32, vec![] .into_iter().collect()), + (70u32, vec![] .into_iter().collect()), (71u32, vec![] .into_iter() + .collect()), (72u32, vec![] .into_iter().collect()), (73u32, vec![] + .into_iter().collect()), (74u32, vec![] .into_iter().collect()), + (75u32, vec![] .into_iter().collect()), (76u32, vec![] .into_iter() + .collect()), (77u32, vec![] .into_iter().collect()), (78u32, vec![] + .into_iter().collect()), (79u32, vec![] .into_iter().collect()), + (80u32, vec![] .into_iter().collect()), (81u32, vec![] .into_iter() + .collect()), (82u32, vec![] .into_iter().collect()), (83u32, vec![] + .into_iter().collect()), (84u32, vec![] .into_iter().collect()), + (85u32, vec![] .into_iter().collect()), (86u32, vec![] .into_iter() + .collect()), (87u32, vec![] .into_iter().collect()), (88u32, vec![] + .into_iter().collect()), (89u32, vec![] .into_iter().collect()), + (90u32, vec![] .into_iter().collect()), (91u32, vec![] .into_iter() + .collect()), (92u32, vec![] .into_iter().collect()), (93u32, vec![] + .into_iter().collect()), (94u32, vec![] .into_iter().collect()), + (95u32, vec![] .into_iter().collect()), (96u32, vec![] .into_iter() + .collect()), (97u32, vec![] .into_iter().collect()), (98u32, vec![] + .into_iter().collect()), (99u32, vec![] .into_iter().collect()), + (100u32, vec![] .into_iter().collect()), (101u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RequestHash, + MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None }, SlotInfo { name : "Storage".into(), + typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2027713511i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureReinforcedCompositeWindow".into(), + prefab_hash: 2027713511i32, + desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." + .into(), + name: "Reinforced Window (Composite)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -816454272i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureReinforcedCompositeWindowSteel".into(), + prefab_hash: -816454272i32, + desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." + .into(), + name: "Reinforced Window (Composite Steel)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1939061729i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureReinforcedWallPaddedWindow".into(), + prefab_hash: 1939061729i32, + desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." + .into(), + name: "Reinforced Window (Padded)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 158502707i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureReinforcedWallPaddedWindowThin".into(), + prefab_hash: 158502707i32, + desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." + .into(), + name: "Reinforced Window (Thin)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 808389066i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketAvionics".into(), + prefab_hash: 808389066i32, + desc: "".into(), + name: "Rocket Avionics".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Quantity, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::VelocityRelativeY, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::Progress, MemoryAccess::Read), + (LogicType::DestinationCode, MemoryAccess::ReadWrite), + (LogicType::Acceleration, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::AutoShutOff, MemoryAccess::ReadWrite), (LogicType::Mass, + MemoryAccess::Read), (LogicType::DryMass, MemoryAccess::Read), + (LogicType::Thrust, MemoryAccess::Read), (LogicType::Weight, + MemoryAccess::Read), (LogicType::ThrustToWeight, MemoryAccess::Read), + (LogicType::TimeToDestination, MemoryAccess::Read), + (LogicType::BurnTimeRemaining, MemoryAccess::Read), + (LogicType::AutoLand, MemoryAccess::Write), + (LogicType::FlightControlRule, MemoryAccess::Read), + (LogicType::ReEntryAltitude, MemoryAccess::Read), (LogicType::Apex, + MemoryAccess::Read), (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::Discover, MemoryAccess::Read), (LogicType::Chart, + MemoryAccess::Read), (LogicType::Survey, MemoryAccess::Read), + (LogicType::NavPoints, MemoryAccess::Read), + (LogicType::ChartedNavPoints, MemoryAccess::Read), (LogicType::Sites, + MemoryAccess::Read), (LogicType::CurrentCode, MemoryAccess::Read), + (LogicType::Density, MemoryAccess::Read), (LogicType::Richness, + MemoryAccess::Read), (LogicType::Size, MemoryAccess::Read), + (LogicType::TotalQuantity, MemoryAccess::Read), + (LogicType::MinedQuantity, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Invalid".into()), (1u32, "None".into()), (2u32, "Mine" + .into()), (3u32, "Survey".into()), (4u32, "Discover".into()), + (5u32, "Chart".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: true, + }, + } + .into(), + ); + map.insert( + 997453927i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketCelestialTracker".into(), + prefab_hash: 997453927i32, + desc: "The Celestial Tracker can be placed in Rockets and when turned on will provide data that can be used to orientate devices such as the Telescope. The Horizontal and Vertical output is localized to the orientation of the tracker. You can calibrate your alignment by comparing the result for the primary body with the output from the Daylight Sensor. Full functionality will only be available in orbit, but you can configure using the primary body. For aligning with the telescope, have the face plate facing up and the cables facing in the same direction as for the telescope and the output values will be aligned." + .into(), + name: "Rocket Celestial Tracker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Horizontal, MemoryAccess::Read), + (LogicType::Vertical, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::Index, + MemoryAccess::ReadWrite), (LogicType::CelestialHash, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("BodyOrientation".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CELESTIAL_INDEX | BYTE_8 |\r\n| 16-31 | HORIZONTAL_DECI_DEGREES | SHORT_16 |\r\n| 32-47 | VERTICAL_DECI_DEGREES | SHORT_16 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "CelestialTracking".into(), value : 1i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::Read, + memory_size: 12u32, + }, + } + .into(), + ); + map.insert( + 150135861i32, + StructureCircuitHolderTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketCircuitHousing".into(), + prefab_hash: 150135861i32, + desc: "".into(), + name: "Rocket Circuit Housing".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::LineNumber, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::LineNumber, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: Some(6u32), + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 178472613i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketEngineTiny".into(), + prefab_hash: 178472613i32, + desc: "".into(), + name: "Rocket Engine (Tiny)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1781051034i32, + StructureLogicDeviceConsumerMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketManufactory".into(), + prefab_hash: 1781051034i32, + desc: "".into(), + name: "Rocket Manufactory".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RecipeHash, + MemoryAccess::ReadWrite), (LogicType::CompletionRatio, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name + : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), + "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" + .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), + "ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot" + .into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(), + "ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel" + .into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(), + "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: Some(FabricatorInfo { + tier: MachineTier::Undefined, + recipes: vec![ + ("ItemKitAccessBridge".into(), Recipe { tier : MachineTier::TierOne, + time : 30f64, energy : 9000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 3f64), + ("Steel".into(), 10f64)] .into_iter().collect() }), + ("ItemKitChuteUmbilical".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 3f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), + ("ItemKitElectricUmbilical".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Gold".into(), 5f64), ("Steel" + .into(), 5f64)] .into_iter().collect() }), ("ItemKitFuselage".into(), + Recipe { tier : MachineTier::TierOne, time : 120f64, energy : + 60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : + vec![("Steel".into(), 20f64)] .into_iter().collect() }), + ("ItemKitGasUmbilical".into(), Recipe { tier : MachineTier::TierOne, + time : 5f64, energy : 2500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 5f64), ("Steel".into(), 5f64)] + .into_iter().collect() }), ("ItemKitGovernedGasRocketEngine".into(), + Recipe { tier : MachineTier::TierOne, time : 60f64, energy : + 60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 10f64), ("Gold".into(), 5f64), ("Iron".into(), + 15f64)] .into_iter().collect() }), ("ItemKitLaunchMount".into(), + Recipe { tier : MachineTier::TierOne, time : 240f64, energy : + 120000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : + vec![("Steel".into(), 60f64)] .into_iter().collect() }), + ("ItemKitLaunchTower".into(), Recipe { tier : MachineTier::TierOne, + time : 30f64, energy : 30000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Steel".into(), 10f64)] .into_iter().collect() }), + ("ItemKitLiquidUmbilical".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel" + .into(), 5f64)] .into_iter().collect() }), + ("ItemKitPressureFedGasEngine".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 60000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Constantan".into(), 10f64), + ("Electrum".into(), 5f64), ("Invar".into(), 20f64), ("Steel".into(), + 20f64)] .into_iter().collect() }), ("ItemKitPressureFedLiquidEngine" + .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, energy : + 60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Astroloy".into(), 10f64), ("Inconel".into(), 5f64), + ("Waspaloy".into(), 15f64)] .into_iter().collect() }), + ("ItemKitPumpedLiquidEngine".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 60000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Constantan".into(), 10f64), + ("Electrum".into(), 5f64), ("Steel".into(), 15f64)] .into_iter() + .collect() }), ("ItemKitRocketAvionics".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Electrum".into(), 2f64), + ("Solder".into(), 3f64)] .into_iter().collect() }), + ("ItemKitRocketBattery".into(), Recipe { tier : MachineTier::TierOne, + time : 10f64, energy : 10000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Electrum".into(), 5f64), ("Solder".into(), 5f64), + ("Steel".into(), 10f64)] .into_iter().collect() }), + ("ItemKitRocketCargoStorage".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 30000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Constantan".into(), 10f64), + ("Invar".into(), 5f64), ("Steel".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitRocketCelestialTracker".into(), Recipe { tier + : MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Electrum".into(), 5f64), + ("Steel".into(), 5f64)] .into_iter().collect() }), + ("ItemKitRocketCircuitHousing".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Electrum".into(), 2f64), + ("Solder".into(), 3f64)] .into_iter().collect() }), + ("ItemKitRocketDatalink".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Electrum".into(), 2f64), + ("Solder".into(), 3f64)] .into_iter().collect() }), + ("ItemKitRocketGasFuelTank".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), + ("ItemKitRocketLiquidFuelTank".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel" + .into(), 20f64)] .into_iter().collect() }), ("ItemKitRocketMiner" + .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, energy : + 60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Constantan".into(), 10f64), ("Electrum".into(), 5f64), + ("Invar".into(), 5f64), ("Steel".into(), 10f64)] .into_iter() + .collect() }), ("ItemKitRocketScanner".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 60000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 10f64), ("Gold" + .into(), 10f64)] .into_iter().collect() }), + ("ItemKitRocketTransformerSmall".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 12000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Electrum".into(), 5f64), + ("Steel".into(), 10f64)] .into_iter().collect() }), + ("ItemKitStairwell".into(), Recipe { tier : MachineTier::TierOne, + time : 20f64, energy : 6000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 15f64)] .into_iter().collect() }), + ("ItemRocketMiningDrillHead".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 20f64)] + .into_iter().collect() }), ("ItemRocketMiningDrillHeadDurable" + .into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy : + 5000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : vec![("Iron" + .into(), 10f64), ("Steel".into(), 10f64)] .into_iter().collect() }), + ("ItemRocketMiningDrillHeadHighSpeedIce".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Invar".into(), 5f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), + ("ItemRocketMiningDrillHeadHighSpeedMineral".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Invar".into(), 5f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), + ("ItemRocketMiningDrillHeadIce".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Iron".into(), 10f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), + ("ItemRocketMiningDrillHeadLongTerm".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Invar".into(), 5f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), + ("ItemRocketMiningDrillHeadMineral".into(), Recipe { tier : + MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Iron".into(), 10f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), ("ItemRocketScanningHead" + .into(), Recipe { tier : MachineTier::TierOne, time : 60f64, energy : + 60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 3f64), ("Gold".into(), 2f64)] .into_iter() + .collect() }) + ] + .into_iter() + .collect(), + }), + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ); + map.insert( + -2087223687i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketMiner".into(), + prefab_hash: -2087223687i32, + desc: "Gathers available resources at the rocket\'s current space location." + .into(), + name: "Rocket Miner".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::DrillCondition, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Drill Head Slot".into(), typ : Class::DrillHead } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2014252591i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketScanner".into(), + prefab_hash: 2014252591i32, + desc: "".into(), + name: "Rocket Scanner".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Scanner Head Slot".into(), typ : Class::ScanningHead } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -654619479i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketTower".into(), + prefab_hash: -654619479i32, + desc: "".into(), + name: "Launch Tower".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 518925193i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketTransformerSmall".into(), + prefab_hash: 518925193i32, + desc: "".into(), + name: "Transformer Small (Rocket)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 806513938i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRover".into(), + prefab_hash: 806513938i32, + desc: "".into(), + name: "Rover Frame".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1875856925i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSDBHopper".into(), + prefab_hash: -1875856925i32, + desc: "".into(), + name: "SDB Hopper".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 467225612i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSDBHopperAdvanced".into(), + prefab_hash: 467225612i32, + desc: "".into(), + name: "SDB Hopper Advanced".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1155865682i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSDBSilo".into(), + prefab_hash: 1155865682i32, + desc: "The majestic silo holds large quantities of almost anything. While it is doing that, it cannot be deconstructed. Note also, that any food you put into a silo is likely to decay extremely rapidly. The silo can hold up to 600 stacks." + .into(), + name: "SDB Silo".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 439026183i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSatelliteDish".into(), + prefab_hash: 439026183i32, + desc: "This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic." + .into(), + name: "Medium Satellite Dish".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Horizontal, MemoryAccess::ReadWrite), + (LogicType::Vertical, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SignalStrength, MemoryAccess::Read), + (LogicType::SignalId, MemoryAccess::Read), + (LogicType::InterrogationProgress, MemoryAccess::Read), + (LogicType::TargetPadIndex, MemoryAccess::ReadWrite), + (LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ, + MemoryAccess::Read), (LogicType::MinimumWattsToContact, + MemoryAccess::Read), (LogicType::WattsReachingContact, + MemoryAccess::Read), (LogicType::ContactTypeId, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::BestContactFilter, MemoryAccess::ReadWrite), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -641491515i32, + StructureLogicDeviceConsumerMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSecurityPrinter".into(), + prefab_hash: -641491515i32, + desc: "Any Stationeer concerned about security needs the Harkwell-designed Vigilant-E security printer. Use the Vigilant-E to create a Cartridge (Access Controller), in order to restrict access to different parts of your base via keycards like the Access Card (Blue). The printer also makes a variety of weapons and ammunitions to defend your base against any hostile, aggressive or just slightly rude entites you encounter as you explore the Solar System.\n" + .into(), + name: "Security Printer".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RecipeHash, + MemoryAccess::ReadWrite), (LogicType::CompletionRatio, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name + : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), + "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" + .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), + "ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot" + .into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(), + "ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel" + .into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(), + "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: Some(FabricatorInfo { + tier: MachineTier::Undefined, + recipes: vec![ + ("AccessCardBlack".into(), Recipe { tier : MachineTier::TierOne, time + : 2f64, energy : 200f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), + ("Iron".into(), 1f64)] .into_iter().collect() }), ("AccessCardBlue" + .into(), Recipe { tier : MachineTier::TierOne, time : 2f64, energy : + 200f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), + 1f64)] .into_iter().collect() }), ("AccessCardBrown".into(), Recipe { + tier : MachineTier::TierOne, time : 2f64, energy : 200f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] .into_iter() + .collect() }), ("AccessCardGray".into(), Recipe { tier : + MachineTier::TierOne, time : 2f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold" + .into(), 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("AccessCardGreen".into(), Recipe { tier : MachineTier::TierOne, time + : 2f64, energy : 200f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), + ("Iron".into(), 1f64)] .into_iter().collect() }), ("AccessCardKhaki" + .into(), Recipe { tier : MachineTier::TierOne, time : 2f64, energy : + 200f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), + 1f64)] .into_iter().collect() }), ("AccessCardOrange".into(), Recipe + { tier : MachineTier::TierOne, time : 2f64, energy : 200f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] .into_iter() + .collect() }), ("AccessCardPink".into(), Recipe { tier : + MachineTier::TierOne, time : 2f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold" + .into(), 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("AccessCardPurple".into(), Recipe { tier : MachineTier::TierOne, + time : 2f64, energy : 200f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), + ("Iron".into(), 1f64)] .into_iter().collect() }), ("AccessCardRed" + .into(), Recipe { tier : MachineTier::TierOne, time : 2f64, energy : + 200f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(), + 1f64)] .into_iter().collect() }), ("AccessCardWhite".into(), Recipe { + tier : MachineTier::TierOne, time : 2f64, energy : 200f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] .into_iter() + .collect() }), ("AccessCardYellow".into(), Recipe { tier : + MachineTier::TierOne, time : 2f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold" + .into(), 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("CartridgeAccessController".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }), + ("FireArmSMG".into(), Recipe { tier : MachineTier::TierOne, time : + 120f64, energy : 3000f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Nickel".into(), 10f64), ("Steel".into(), 30f64)] + .into_iter().collect() }), ("Handgun".into(), Recipe { tier : + MachineTier::TierOne, time : 120f64, energy : 3000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Nickel".into(), 10f64), + ("Steel".into(), 30f64)] .into_iter().collect() }), + ("HandgunMagazine".into(), Recipe { tier : MachineTier::TierOne, time + : 60f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 3f64), ("Lead".into(), 1f64), + ("Steel".into(), 3f64)] .into_iter().collect() }), ("ItemAmmoBox" + .into(), Recipe { tier : MachineTier::TierOne, time : 120f64, energy + : 3000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 30f64), ("Lead".into(), 50f64), ("Steel" + .into(), 30f64)] .into_iter().collect() }), ("ItemExplosive".into(), + Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 5i64, reagents : vec![("Copper".into(), + 5f64), ("Electrum".into(), 1f64), ("Gold".into(), 5f64), ("Lead" + .into(), 10f64), ("Steel".into(), 7f64)] .into_iter().collect() }), + ("ItemGrenade".into(), Recipe { tier : MachineTier::TierOne, time : + 90f64, energy : 2900f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 4i64, + reagents : vec![("Copper".into(), 15f64), ("Gold".into(), 1f64), + ("Lead".into(), 25f64), ("Steel".into(), 25f64)] .into_iter() + .collect() }), ("ItemMiningCharge".into(), Recipe { tier : + MachineTier::TierOne, time : 7f64, energy : 200f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 7f64), ("Lead".into(), 10f64)] + .into_iter().collect() }), ("SMGMagazine".into(), Recipe { tier : + MachineTier::TierOne, time : 60f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Lead" + .into(), 1f64), ("Steel".into(), 3f64)] .into_iter().collect() }), + ("WeaponPistolEnergy".into(), Recipe { tier : MachineTier::TierTwo, + time : 120f64, energy : 3000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 4i64, + reagents : vec![("Electrum".into(), 20f64), ("Gold".into(), 10f64), + ("Solder".into(), 10f64), ("Steel".into(), 10f64)] .into_iter() + .collect() }), ("WeaponRifleEnergy".into(), Recipe { tier : + MachineTier::TierTwo, time : 240f64, energy : 10000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 6i64, reagents : vec![("Constantan".into(), 10f64), + ("Electrum".into(), 20f64), ("Gold".into(), 10f64), ("Invar".into(), + 10f64), ("Solder".into(), 10f64), ("Steel".into(), 20f64)] + .into_iter().collect() }) + ] + .into_iter() + .collect(), + }), + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ); + map.insert( + 1172114950i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShelf".into(), + prefab_hash: 1172114950i32, + desc: "".into(), + name: "Shelf".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 182006674i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShelfMedium".into(), + prefab_hash: 182006674i32, + desc: "A shelf for putting things on, so you can see them.".into(), + name: "Shelf Medium".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1330754486i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShortCornerLocker".into(), + prefab_hash: 1330754486i32, + desc: "".into(), + name: "Short Corner Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -554553467i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShortLocker".into(), + prefab_hash: -554553467i32, + desc: "".into(), + name: "Short Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -775128944i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShower".into(), + prefab_hash: -775128944i32, + desc: "".into(), + name: "Shower".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1081797501i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShowerPowered".into(), + prefab_hash: -1081797501i32, + desc: "".into(), + name: "Shower (Powered)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 879058460i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSign1x1".into(), + prefab_hash: 879058460i32, + desc: "".into(), + name: "Sign 1x1".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 908320837i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSign2x1".into(), + prefab_hash: 908320837i32, + desc: "".into(), + name: "Sign 2x1".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -492611i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSingleBed".into(), + prefab_hash: -492611i32, + desc: "Description coming.".into(), + name: "Single Bed".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1467449329i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeper".into(), + prefab_hash: -1467449329i32, + desc: "".into(), + name: "Sleeper".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1213495833i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeperLeft".into(), + prefab_hash: 1213495833i32, + desc: "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided." + .into(), + name: "Sleeper Left".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, + "Unpowered".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1812330717i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeperRight".into(), + prefab_hash: -1812330717i32, + desc: "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided." + .into(), + name: "Sleeper Right".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, + "Unpowered".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1300059018i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeperVertical".into(), + prefab_hash: -1300059018i32, + desc: "The vertical variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided." + .into(), + name: "Sleeper Vertical".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.1f32, + radiation_factor: 0.1f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, + "Unpowered".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1382098999i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeperVerticalDroid".into(), + prefab_hash: 1382098999i32, + desc: "The Droid Sleeper will recharge robot batteries and equiped suit batteries if present. This sleeper variant is only safe for robots. Entering as a non robot character will cause you to take damage." + .into(), + name: "Droid Sleeper Vertical".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1310303582i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallDirectHeatExchangeGastoGas".into(), + prefab_hash: 1310303582i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Small Direct Heat Exchanger - Gas + Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1825212016i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallDirectHeatExchangeLiquidtoGas".into(), + prefab_hash: 1825212016i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Small Direct Heat Exchanger - Liquid + Gas ".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -507770416i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallDirectHeatExchangeLiquidtoLiquid".into(), + prefab_hash: -507770416i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Small Direct Heat Exchanger - Liquid + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2138748650i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallSatelliteDish".into(), + prefab_hash: -2138748650i32, + desc: "This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic." + .into(), + name: "Small Satellite Dish".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Horizontal, MemoryAccess::ReadWrite), + (LogicType::Vertical, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SignalStrength, MemoryAccess::Read), + (LogicType::SignalId, MemoryAccess::Read), + (LogicType::InterrogationProgress, MemoryAccess::Read), + (LogicType::TargetPadIndex, MemoryAccess::ReadWrite), + (LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ, + MemoryAccess::Read), (LogicType::MinimumWattsToContact, + MemoryAccess::Read), (LogicType::WattsReachingContact, + MemoryAccess::Read), (LogicType::ContactTypeId, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::BestContactFilter, MemoryAccess::ReadWrite), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1633000411i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableBacklessDouble".into(), + prefab_hash: -1633000411i32, + desc: "".into(), + name: "Small (Table Backless Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1897221677i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableBacklessSingle".into(), + prefab_hash: -1897221677i32, + desc: "".into(), + name: "Small (Table Backless Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1260651529i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableDinnerSingle".into(), + prefab_hash: 1260651529i32, + desc: "".into(), + name: "Small (Table Dinner Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -660451023i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableRectangleDouble".into(), + prefab_hash: -660451023i32, + desc: "".into(), + name: "Small (Table Rectangle Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -924678969i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableRectangleSingle".into(), + prefab_hash: -924678969i32, + desc: "".into(), + name: "Small (Table Rectangle Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -19246131i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableThickDouble".into(), + prefab_hash: -19246131i32, + desc: "".into(), + name: "Small (Table Thick Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -291862981i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableThickSingle".into(), + prefab_hash: -291862981i32, + desc: "".into(), + name: "Small Table (Thick Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2045627372i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanel".into(), + prefab_hash: -2045627372i32, + desc: "Sinotai\'s standard solar panels are used for generating power from sunlight. They can be connected to Logic systems, in order to track sunlight, but their reduced during storms and when damaged. You can repair these using some trusty Duct Tape." + .into(), + name: "Solar Panel".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1554349863i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanel45".into(), + prefab_hash: -1554349863i32, + desc: "Sinotai basic solar panels generate power from sunlight, sitting at 45 degrees to the ground. Their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape." + .into(), + name: "Solar Panel (Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 930865127i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanel45Reinforced".into(), + prefab_hash: 930865127i32, + desc: "This solar panel is resistant to storm damage.".into(), + name: "Solar Panel (Heavy Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -539224550i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelDual".into(), + prefab_hash: -539224550i32, + desc: "Sinotai dual solar panels are used for generating power from sunlight, with dedicated data and power ports. They can be connected to {Logic systems, in order to track sunlight, but their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape." + .into(), + name: "Solar Panel (Dual)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1545574413i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelDualReinforced".into(), + prefab_hash: -1545574413i32, + desc: "This solar panel is resistant to storm damage.".into(), + name: "Solar Panel (Heavy Dual)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1968102968i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelFlat".into(), + prefab_hash: 1968102968i32, + desc: "Sinotai basic solar panels generate power from sunlight. They lie flat to the ground, and their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape." + .into(), + name: "Solar Panel (Flat)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1697196770i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelFlatReinforced".into(), + prefab_hash: 1697196770i32, + desc: "This solar panel is resistant to storm damage.".into(), + name: "Solar Panel (Heavy Flat)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -934345724i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelReinforced".into(), + prefab_hash: -934345724i32, + desc: "This solar panel is resistant to storm damage.".into(), + name: "Solar Panel (Heavy)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 813146305i32, + StructureLogicDeviceConsumerTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolidFuelGenerator".into(), + prefab_hash: 813146305i32, + desc: "The mainstay of power generation for Stationeers, this device provides 20kW of power. Multiple solid resources can be loaded. While operating, the device will output its maximum power regardless of whether you have captured it or not. Watch for blown wires! It will output much more power than your regular Cable Coil can handle." + .into(), + name: "Generator (Solid Fuel)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PowerGeneration, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Not Generating".into()), (1u32, "Generating".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Input".into(), typ : Class::Ore }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemCharcoal".into(), "ItemCoalOre".into(), "ItemSolidFuel".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: None, + } + .into(), + ); + map.insert( + -1009150565i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSorter".into(), + prefab_hash: -1009150565i32, + desc: "No amount of automation is complete without some way of moving different items to different parts of a system. The Xigo A2B sorter can be programmed via a computer with a Sorter Motherboard to direct various items into different chute networks. Filtered items are always passed out the righthand side of the sorter, while non filtered items continue straight through." + .into(), + name: "Sorter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::Output, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Split".into()), (1u32, "Filter".into()), (2u32, "Logic" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None }, SlotInfo { name : "Export 2" + .into(), typ : Class::None }, SlotInfo { name : "Data Disk".into(), typ : + Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output2 }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2020231820i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStacker".into(), + prefab_hash: -2020231820i32, + desc: "A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed." + .into(), + name: "Stacker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::Output, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None }, SlotInfo { name : "Processing" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1585641623i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStackerReverse".into(), + prefab_hash: 1585641623i32, + desc: "A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs. The reversed stacker has power and data on the opposite side.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed." + .into(), + name: "Stacker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::Output, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None }, SlotInfo { name : "Export".into(), + typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1405018945i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairs4x2".into(), + prefab_hash: 1405018945i32, + desc: "".into(), + name: "Stairs".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 155214029i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairs4x2RailL".into(), + prefab_hash: 155214029i32, + desc: "".into(), + name: "Stairs with Rail (Left)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -212902482i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairs4x2RailR".into(), + prefab_hash: -212902482i32, + desc: "".into(), + name: "Stairs with Rail (Right)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1088008720i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairs4x2Rails".into(), + prefab_hash: -1088008720i32, + desc: "".into(), + name: "Stairs with Rails".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 505924160i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellBackLeft".into(), + prefab_hash: 505924160i32, + desc: "".into(), + name: "Stairwell (Back Left)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -862048392i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellBackPassthrough".into(), + prefab_hash: -862048392i32, + desc: "".into(), + name: "Stairwell (Back Passthrough)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2128896573i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellBackRight".into(), + prefab_hash: -2128896573i32, + desc: "".into(), + name: "Stairwell (Back Right)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -37454456i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellFrontLeft".into(), + prefab_hash: -37454456i32, + desc: "".into(), + name: "Stairwell (Front Left)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1625452928i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellFrontPassthrough".into(), + prefab_hash: -1625452928i32, + desc: "".into(), + name: "Stairwell (Front Passthrough)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 340210934i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellFrontRight".into(), + prefab_hash: 340210934i32, + desc: "".into(), + name: "Stairwell (Front Right)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2049879875i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellNoDoors".into(), + prefab_hash: 2049879875i32, + desc: "".into(), + name: "Stairwell (No Doors)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -260316435i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStirlingEngine".into(), + prefab_hash: -260316435i32, + desc: "Harnessing an ancient thermal exploit, the Recurso \'Libra\' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room\'s ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results." + .into(), + name: "Stirling Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.15f32, + radiation_factor: 0.15f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PowerGeneration, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion, + MemoryAccess::Read), (LogicType::EnvironmentEfficiency, + MemoryAccess::Read), (LogicType::WorkingGasEfficiency, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -793623899i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStorageLocker".into(), + prefab_hash: -793623899i32, + desc: "".into(), + name: "Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (15u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (16u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (17u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (18u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (19u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (20u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (21u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (22u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (23u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (24u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (25u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (26u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (27u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (28u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (29u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo + { name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ + : Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 255034731i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSuitStorage".into(), + prefab_hash: 255034731i32, + desc: "As tidy as it is useful, the suit storage rack holds an Eva Suit, Space Helmet and a Jetpack Basic.\nWhen powered and connected to and , it will recharge the suit\'s batteries, refill the Canister (Oxygen) and your Filter (Nitrogen) Gas Canister. The wastetank will be pumped out to the pipe connected to the waste outlet.\nAll the rack\'s pipes must be connected or the unit will show an error state, but it will still charge the battery." + .into(), + name: "Suit Storage".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), (LogicSlotType::On, + MemoryAccess::ReadWrite), (LogicSlotType::Lock, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::PressureWaste, MemoryAccess::Read), + (LogicSlotType::PressureAir, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Helmet".into(), typ : Class::Helmet }, SlotInfo { name + : "Suit".into(), typ : Class::Suit }, SlotInfo { name : "Back".into(), + typ : Class::Back } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1606848156i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankBig".into(), + prefab_hash: -1606848156i32, + desc: "".into(), + name: "Large Tank".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1280378227i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankBigInsulated".into(), + prefab_hash: 1280378227i32, + desc: "".into(), + name: "Tank Big (Insulated)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1276379454i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankConnector".into(), + prefab_hash: -1276379454i32, + desc: "Tank connectors are basic mounting devices that allow you to attach a Portable Gas Tank to a gas pipe network." + .into(), + name: "Tank Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1331802518i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankConnectorLiquid".into(), + prefab_hash: 1331802518i32, + desc: "These basic mounting devices allow you to attach a Portable Liquid Tank to a liquid pipe network." + .into(), + name: "Liquid Tank Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.010000001f32, + radiation_factor: 0.0005f32, + }), + internal_atmo_info: None, + slots: vec![SlotInfo { name : "Portable Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1013514688i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankSmall".into(), + prefab_hash: 1013514688i32, + desc: "".into(), + name: "Small Tank".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 955744474i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankSmallAir".into(), + prefab_hash: 955744474i32, + desc: "".into(), + name: "Small Tank (Air)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2102454415i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankSmallFuel".into(), + prefab_hash: 2102454415i32, + desc: "".into(), + name: "Small Tank (Fuel)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0.05f32, + radiation_factor: 0.002f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 272136332i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankSmallInsulated".into(), + prefab_hash: 272136332i32, + desc: "".into(), + name: "Tank Small (Insulated)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: Some(ThermalInfo { + convection_factor: 0f32, + radiation_factor: 0f32, + }), + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -465741100i32, + StructureLogicDeviceConsumerMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureToolManufactory".into(), + prefab_hash: -465741100i32, + desc: "No mission can be completed without the proper tools. The Norsec ThuulDek manufactory can fabricate almost any tool or hand-held device a Stationeer may need to complete their mission, as well as a variety of delightful paints.\nUpgrade the device using a Tool Printer Mod for additional recipes and faster processing speeds." + .into(), + name: "Tool Manufactory".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RecipeHash, + MemoryAccess::ReadWrite), (LogicType::CompletionRatio, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name + : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + consumer_info: ConsumerInfo { + consumed_resouces: vec![ + "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), + "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" + .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), + "ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot" + .into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(), + "ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel" + .into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(), + "ItemWaspaloyIngot".into(), "ItemWasteIngot".into() + ] + .into_iter() + .collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: Some(FabricatorInfo { + tier: MachineTier::Undefined, + recipes: vec![ + ("FlareGun".into(), Recipe { tier : MachineTier::TierOne, time : + 10f64, energy : 2000f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Iron".into(), 10f64), ("Silicon".into(), 10f64)] + .into_iter().collect() }), ("ItemAngleGrinder".into(), Recipe { tier + : MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Iron" + .into(), 3f64)] .into_iter().collect() }), ("ItemArcWelder".into(), + Recipe { tier : MachineTier::TierOne, time : 30f64, energy : 2500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 4i64, reagents : vec![("Electrum".into(), + 10f64), ("Invar".into(), 5f64), ("Solder".into(), 10f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), ("ItemBasketBall".into(), + Recipe { tier : MachineTier::TierOne, time : 1f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Silicon".into(), + 1f64)] .into_iter().collect() }), ("ItemBeacon".into(), Recipe { tier + : MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 1f64), ("Iron".into(), 2f64)] .into_iter().collect() }), + ("ItemChemLightBlue".into(), Recipe { tier : MachineTier::TierOne, + time : 1f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }), + ("ItemChemLightGreen".into(), Recipe { tier : MachineTier::TierOne, + time : 1f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }), + ("ItemChemLightRed".into(), Recipe { tier : MachineTier::TierOne, + time : 1f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }), + ("ItemChemLightWhite".into(), Recipe { tier : MachineTier::TierOne, + time : 1f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }), + ("ItemChemLightYellow".into(), Recipe { tier : MachineTier::TierOne, + time : 1f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }), + ("ItemClothingBagOveralls_Aus".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)] + .into_iter().collect() }), ("ItemClothingBagOveralls_Brazil".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Silicon".into(), + 25f64)] .into_iter().collect() }), ("ItemClothingBagOveralls_Canada" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : + vec![("Silicon".into(), 25f64)] .into_iter().collect() }), + ("ItemClothingBagOveralls_China".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)] + .into_iter().collect() }), ("ItemClothingBagOveralls_EU".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Silicon".into(), + 25f64)] .into_iter().collect() }), ("ItemClothingBagOveralls_France" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : + vec![("Silicon".into(), 25f64)] .into_iter().collect() }), + ("ItemClothingBagOveralls_Germany".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)] + .into_iter().collect() }), ("ItemClothingBagOveralls_Japan".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Silicon".into(), + 25f64)] .into_iter().collect() }), ("ItemClothingBagOveralls_Korea" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : + vec![("Silicon".into(), 25f64)] .into_iter().collect() }), + ("ItemClothingBagOveralls_NZ".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)] + .into_iter().collect() }), ("ItemClothingBagOveralls_Russia".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Silicon".into(), + 25f64)] .into_iter().collect() }), + ("ItemClothingBagOveralls_SouthAfrica".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)] + .into_iter().collect() }), ("ItemClothingBagOveralls_UK".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Silicon".into(), + 25f64)] .into_iter().collect() }), ("ItemClothingBagOveralls_US" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : + vec![("Silicon".into(), 25f64)] .into_iter().collect() }), + ("ItemClothingBagOveralls_Ukraine".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)] + .into_iter().collect() }), ("ItemCrowbar".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemDirtCanister".into(), Recipe { tier + : MachineTier::TierOne, time : 5f64, energy : 400f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 3f64)] + .into_iter().collect() }), ("ItemDisposableBatteryCharger".into(), + Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 1000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 5f64), ("Gold".into(), 2f64), ("Iron".into(), 2f64)] .into_iter() + .collect() }), ("ItemDrill".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron" + .into(), 5f64)] .into_iter().collect() }), ("ItemDuctTape".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 2f64)] .into_iter().collect() }), ("ItemEvaSuit".into(), Recipe { + tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Copper".into(), + 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }), + ("ItemFlagSmall".into(), Recipe { tier : MachineTier::TierOne, time : + 1f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 1f64)] .into_iter().collect() }), + ("ItemFlashlight".into(), Recipe { tier : MachineTier::TierOne, time + : 15f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)] + .into_iter().collect() }), ("ItemGlasses".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 250f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Iron".into(), 15f64), + ("Silicon".into(), 10f64)] .into_iter().collect() }), + ("ItemHardBackpack".into(), Recipe { tier : MachineTier::TierTwo, + time : 30f64, energy : 1500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Astroloy".into(), 5f64), ("Steel".into(), 15f64), + ("Stellite".into(), 5f64)] .into_iter().collect() }), + ("ItemHardJetpack".into(), Recipe { tier : MachineTier::TierTwo, time + : 40f64, energy : 1750f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 4i64, + reagents : vec![("Astroloy".into(), 8f64), ("Steel".into(), 20f64), + ("Stellite".into(), 8f64), ("Waspaloy".into(), 8f64)] .into_iter() + .collect() }), ("ItemHardMiningBackPack".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Invar".into(), 1f64), ("Steel" + .into(), 6f64)] .into_iter().collect() }), ("ItemHardSuit".into(), + Recipe { tier : MachineTier::TierTwo, time : 60f64, energy : 3000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Astroloy".into(), + 10f64), ("Steel".into(), 20f64), ("Stellite".into(), 2f64)] + .into_iter().collect() }), ("ItemHardsuitHelmet".into(), Recipe { + tier : MachineTier::TierTwo, time : 50f64, energy : 1750f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Astroloy".into(), + 2f64), ("Steel".into(), 10f64), ("Stellite".into(), 2f64)] + .into_iter().collect() }), ("ItemIgniter".into(), Recipe { tier : + MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Copper".into(), 3f64)] + .into_iter().collect() }), ("ItemJetpackBasic".into(), Recipe { tier + : MachineTier::TierOne, time : 30f64, energy : 1500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Gold".into(), 2f64), ("Lead" + .into(), 5f64), ("Steel".into(), 10f64)] .into_iter().collect() }), + ("ItemKitBasket".into(), Recipe { tier : MachineTier::TierOne, time : + 1f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemLabeller".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Gold".into(), 1f64), ("Iron" + .into(), 2f64)] .into_iter().collect() }), ("ItemMKIIAngleGrinder" + .into(), Recipe { tier : MachineTier::TierTwo, time : 10f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 3i64, reagents : + vec![("Copper".into(), 1f64), ("Electrum".into(), 4f64), ("Iron" + .into(), 3f64)] .into_iter().collect() }), ("ItemMKIIArcWelder" + .into(), Recipe { tier : MachineTier::TierTwo, time : 30f64, energy : + 2500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Electrum".into(), 14f64), ("Invar".into(), 5f64), ("Solder" + .into(), 10f64), ("Steel".into(), 10f64)] .into_iter().collect() }), + ("ItemMKIICrowbar".into(), Recipe { tier : MachineTier::TierTwo, time + : 10f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Electrum".into(), 5f64), ("Iron".into(), 5f64)] + .into_iter().collect() }), ("ItemMKIIDrill".into(), Recipe { tier : + MachineTier::TierTwo, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), + ("Electrum".into(), 5f64), ("Iron".into(), 5f64)] .into_iter() + .collect() }), ("ItemMKIIDuctTape".into(), Recipe { tier : + MachineTier::TierTwo, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Electrum".into(), 1f64), + ("Iron".into(), 2f64)] .into_iter().collect() }), + ("ItemMKIIMiningDrill".into(), Recipe { tier : MachineTier::TierTwo, + time : 5f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Copper".into(), 2f64), ("Electrum".into(), 5f64), + ("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemMKIIScrewdriver".into(), Recipe { tier : MachineTier::TierTwo, + time : 10f64, energy : 500f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Electrum".into(), 2f64), ("Iron".into(), 2f64)] + .into_iter().collect() }), ("ItemMKIIWireCutters".into(), Recipe { + tier : MachineTier::TierTwo, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 2i64, reagents : vec![("Electrum".into(), + 5f64), ("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemMKIIWrench".into(), Recipe { tier : MachineTier::TierTwo, time + : 10f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Electrum".into(), 3f64), ("Iron".into(), 3f64)] + .into_iter().collect() }), ("ItemMarineBodyArmor".into(), Recipe { + tier : MachineTier::TierOne, time : 60f64, energy : 3000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Nickel".into(), + 10f64), ("Silicon".into(), 10f64), ("Steel".into(), 20f64)] + .into_iter().collect() }), ("ItemMarineHelmet".into(), Recipe { tier + : MachineTier::TierOne, time : 45f64, energy : 1750f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Gold".into(), 4f64), ("Silicon" + .into(), 4f64), ("Steel".into(), 8f64)] .into_iter().collect() }), + ("ItemMiningBackPack".into(), Recipe { tier : MachineTier::TierOne, + time : 8f64, energy : 800f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 6f64)] .into_iter().collect() }), + ("ItemMiningBelt".into(), Recipe { tier : MachineTier::TierOne, time + : 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Iron".into(), 3f64)] .into_iter().collect() }), + ("ItemMiningBeltMKII".into(), Recipe { tier : MachineTier::TierTwo, + time : 10f64, energy : 1000f64, temperature : RecipeRange { start : + 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { + start : 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Constantan".into(), 5f64), ("Steel".into(), 10f64)] + .into_iter().collect() }), ("ItemMiningDrill".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron" + .into(), 3f64)] .into_iter().collect() }), ("ItemMiningDrillHeavy" + .into(), Recipe { tier : MachineTier::TierTwo, time : 30f64, energy : + 2500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Electrum".into(), 5f64), ("Invar".into(), 10f64), ("Solder" + .into(), 10f64), ("Steel".into(), 10f64)] .into_iter().collect() }), + ("ItemMiningDrillPneumatic".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 2000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Copper".into(), 4f64), + ("Solder".into(), 4f64), ("Steel".into(), 6f64)] .into_iter() + .collect() }), ("ItemMkIIToolbelt".into(), Recipe { tier : + MachineTier::TierTwo, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Constantan".into(), 5f64), + ("Iron".into(), 3f64)] .into_iter().collect() }), ("ItemNVG".into(), + Recipe { tier : MachineTier::TierOne, time : 45f64, energy : 2750f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Hastelloy" + .into(), 10f64), ("Silicon".into(), 5f64), ("Steel".into(), 5f64)] + .into_iter().collect() }), ("ItemPickaxe".into(), Recipe { tier : + MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Iron" + .into(), 2f64)] .into_iter().collect() }), ("ItemPlantSampler" + .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 5f64), ("Iron".into(), 5f64)] .into_iter() + .collect() }), ("ItemRemoteDetonator".into(), Recipe { tier : + MachineTier::TierOne, time : 4.5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Gold".into(), 1f64), ("Iron" + .into(), 3f64)] .into_iter().collect() }), + ("ItemReusableFireExtinguisher".into(), Recipe { tier : + MachineTier::TierOne, time : 20f64, energy : 1000f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Steel".into(), 5f64)] + .into_iter().collect() }), ("ItemRoadFlare".into(), Recipe { tier : + MachineTier::TierOne, time : 1f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 1f64)] + .into_iter().collect() }), ("ItemScrewdriver".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 2f64)] + .into_iter().collect() }), ("ItemSensorLenses".into(), Recipe { tier + : MachineTier::TierTwo, time : 45f64, energy : 3500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 3i64, reagents : vec![("Inconel".into(), 5f64), + ("Silicon".into(), 5f64), ("Steel".into(), 5f64)] .into_iter() + .collect() }), ("ItemSensorProcessingUnitCelestialScanner".into(), + Recipe { tier : MachineTier::TierTwo, time : 15f64, energy : 100f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 4i64, reagents : vec![("Copper".into(), + 5f64), ("Gold".into(), 5f64), ("Iron".into(), 5f64), ("Silicon" + .into(), 5f64)] .into_iter().collect() }), + ("ItemSensorProcessingUnitMesonScanner".into(), Recipe { tier : + MachineTier::TierTwo, time : 15f64, energy : 100f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 4i64, reagents : vec![("Copper".into(), 5f64), ("Gold" + .into(), 5f64), ("Iron".into(), 5f64), ("Silicon".into(), 5f64)] + .into_iter().collect() }), ("ItemSensorProcessingUnitOreScanner" + .into(), Recipe { tier : MachineTier::TierTwo, time : 15f64, energy : + 100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 4i64, reagents : + vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron".into(), + 5f64), ("Silicon".into(), 5f64)] .into_iter().collect() }), + ("ItemSpaceHelmet".into(), Recipe { tier : MachineTier::TierOne, time + : 15f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + stop : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 2i64, + reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)] + .into_iter().collect() }), ("ItemSpacepack".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron" + .into(), 5f64)] .into_iter().collect() }), ("ItemSprayCanBlack" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanBlue" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanBrown" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanGreen" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanGrey" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanKhaki" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanOrange" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanPink" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanPurple" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron" + .into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanRed".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 1f64)] .into_iter().collect() }), ("ItemSprayCanWhite".into(), Recipe + { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 1f64)] .into_iter().collect() }), ("ItemSprayCanYellow".into(), + Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 1i64, reagents : vec![("Iron".into(), + 1f64)] .into_iter().collect() }), ("ItemSprayGun".into(), Recipe { + tier : MachineTier::TierTwo, time : 10f64, energy : 2000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Invar".into(), + 5f64), ("Silicon".into(), 10f64), ("Steel".into(), 10f64)] + .into_iter().collect() }), ("ItemTerrainManipulator".into(), Recipe { + tier : MachineTier::TierOne, time : 15f64, energy : 600f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 3i64, reagents : vec![("Copper".into(), + 3f64), ("Gold".into(), 2f64), ("Iron".into(), 5f64)] .into_iter() + .collect() }), ("ItemToolBelt".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 3f64)] + .into_iter().collect() }), ("ItemWearLamp".into(), Recipe { tier : + MachineTier::TierOne, time : 15f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Gold" + .into(), 2f64)] .into_iter().collect() }), ("ItemWeldingTorch" + .into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 2i64, reagents : + vec![("Copper".into(), 1f64), ("Iron".into(), 3f64)] .into_iter() + .collect() }), ("ItemWireCutters".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 3f64)] + .into_iter().collect() }), ("ItemWrench".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Iron".into(), 3f64)] + .into_iter().collect() }), ("ToyLuna".into(), Recipe { tier : + MachineTier::TierOne, time : 10f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 2i64, reagents : vec![("Gold".into(), 1f64), ("Iron" + .into(), 5f64)] .into_iter().collect() }), ("UniformCommander" + .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : + 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, + is_valid : false }, pressure : RecipeRange { start : 0f64, stop : + 1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule : + 0i64, is_any : true, is_any_to_remove : false, reagents : vec![] + .into_iter().collect() }, count_types : 1i64, reagents : + vec![("Silicon".into(), 25f64)] .into_iter().collect() }), + ("UniformMarine".into(), Recipe { tier : MachineTier::TierOne, time : + 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop + : 80000f64, is_valid : false }, pressure : RecipeRange { start : + 0f64, stop : 1000000f64, is_valid : false }, required_mix : + RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false, + reagents : vec![] .into_iter().collect() }, count_types : 1i64, + reagents : vec![("Silicon".into(), 10f64)] .into_iter().collect() }), + ("UniformOrangeJumpSuit".into(), Recipe { tier : + MachineTier::TierOne, time : 5f64, energy : 500f64, temperature : + RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, + pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : + false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true, + is_any_to_remove : false, reagents : vec![] .into_iter().collect() }, + count_types : 1i64, reagents : vec![("Silicon".into(), 10f64)] + .into_iter().collect() }), ("WeaponPistolEnergy".into(), Recipe { + tier : MachineTier::TierTwo, time : 120f64, energy : 3000f64, + temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : + false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64, + is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any + : true, is_any_to_remove : false, reagents : vec![] .into_iter() + .collect() }, count_types : 4i64, reagents : vec![("Electrum".into(), + 20f64), ("Gold".into(), 10f64), ("Solder".into(), 10f64), ("Steel" + .into(), 10f64)] .into_iter().collect() }), ("WeaponRifleEnergy" + .into(), Recipe { tier : MachineTier::TierTwo, time : 240f64, energy + : 10000f64, temperature : RecipeRange { start : 1f64, stop : + 80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64, + stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix { + rule : 0i64, is_any : true, is_any_to_remove : false, reagents : + vec![] .into_iter().collect() }, count_types : 6i64, reagents : + vec![("Constantan".into(), 10f64), ("Electrum".into(), 20f64), + ("Gold".into(), 10f64), ("Invar".into(), 10f64), ("Solder".into(), + 10f64), ("Steel".into(), 20f64)] .into_iter().collect() }) + ] + .into_iter() + .collect(), + }), + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ); + map.insert( + 1473807953i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTorpedoRack".into(), + prefab_hash: 1473807953i32, + desc: "".into(), + name: "Torpedo Rack".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "Torpedo".into(), typ : Class::Torpedo }, SlotInfo { + name : "Torpedo".into(), typ : Class::Torpedo }, SlotInfo { name : + "Torpedo".into(), typ : Class::Torpedo }, SlotInfo { name : "Torpedo" + .into(), typ : Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ + : Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ : + Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ : + Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ : + Class::Torpedo } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1570931620i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTraderWaypoint".into(), + prefab_hash: 1570931620i32, + desc: "".into(), + name: "Trader Waypoint".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1423212473i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformer".into(), + prefab_hash: -1423212473i32, + desc: "The large Norsec transformer is a critical component of extended electrical networks, controlling the maximum power that will flow down a cable. To prevent overloading, output can be set from 0 to 50,000W. \nNote that transformers operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1065725831i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformerMedium".into(), + prefab_hash: -1065725831i32, + desc: "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 833912764i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformerMediumReversed".into(), + prefab_hash: 833912764i32, + desc: "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer Reversed (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -890946730i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformerSmall".into(), + prefab_hash: -890946730i32, + desc: "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1054059374i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformerSmallReversed".into(), + prefab_hash: 1054059374i32, + desc: "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer Reversed (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1282191063i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTurbineGenerator".into(), + prefab_hash: 1282191063i32, + desc: "".into(), + name: "Turbine Generator".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PowerGeneration, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1310794736i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTurboVolumePump".into(), + prefab_hash: 1310794736i32, + desc: "Shifts 10 times more gas than a basic Volume Pump, with a mode that can be set to flow in either direction." + .into(), + name: "Turbo Volume Pump (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Right".into()), (1u32, "Left".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo + { typ : ConnectionType::Pipe, role : ConnectionRole::Input } ] .into_iter() .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1433754995i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWaterBottleFillerBottom".into(), - prefab_hash: 1433754995i32, - desc: "".into(), - name: "Water Bottle Filler Bottom".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::PrefabHash, - MemoryAccess::Read), (LogicType::ReferenceId, - MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, - SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 750118160i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureUnloader".into(), + prefab_hash: 750118160i32, + desc: "The Xigo Re:Gurge is a handy unit for unloading any items inserted into it, and feeding them into a chute network. For instance, if you add a full Mining Belt, the Re:Gurge will empty a mining belt of its contents, insert them into the chute network, then insert the mining belt itself. A Sorter is recommended to reclaim the mining belt.\n\nOutput = 0 exporting the main item\nOutput = 1 exporting items inside and eventually the main item." + .into(), + name: "Unloader".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) ] .into_iter() .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -756587791i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWaterBottleFillerPowered".into(), - prefab_hash: -756587791i32, - desc: "".into(), - name: "Waterbottle Filler".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, - SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Input }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1986658780i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWaterBottleFillerPoweredBottom".into(), - prefab_hash: 1986658780i32, - desc: "".into(), - name: "Waterbottle Filler".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, - MemoryAccess::Read), (LogicSlotType::OccupantHash, - MemoryAccess::Read), (LogicSlotType::Quantity, - MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Pressure, MemoryAccess::Read), - (LogicSlotType::Temperature, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::Volume, MemoryAccess::Read), - (LogicSlotType::Open, MemoryAccess::ReadWrite), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Activate, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![ - SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, - SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } - ] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -517628750i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWaterDigitalValve".into(), - prefab_hash: -517628750i32, - desc: "".into(), - name: "Liquid Digital Valve".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::PowerAndData, role : - ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 433184168i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWaterPipeMeter".into(), - prefab_hash: 433184168i32, - desc: "".into(), - name: "Liquid Pipe Meter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![].into_iter().collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 887383294i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWaterPurifier".into(), - prefab_hash: 887383294i32, - desc: "Cleans Polluted Water and outputs Water. The purification process requires Charcoal which can be added to the machine via the import bin. The procesing throughput can be improved by increasing the gas pressure of the input pipe relative to the gas pressure of the output pipe." - .into(), - name: "Water Purifier".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::ClearMemory, MemoryAccess::Write), - (LogicType::ImportCount, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Import".into(), typ : Class::Ore }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PipeLiquid, role : ConnectionRole::Input }, - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::Output }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None }, - ConnectionInfo { typ : ConnectionType::Chute, role : - ConnectionRole::Input } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -1369060582i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWaterWallCooler".into(), - prefab_hash: -1369060582i32, - desc: "".into(), - name: "Liquid Wall Cooler".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::PrefabHash, MemoryAccess::Read), - (LogicSlotType::SortingClass, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), - (LogicType::Setting, MemoryAccess::ReadWrite), - (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::RequiredPower, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] - .into_iter() - .collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::PipeLiquid, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::PowerAndData, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: false, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 1997212478i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWeatherStation".into(), - prefab_hash: 1997212478i32, - desc: "0.NoStorm\n1.StormIncoming\n2.InStorm".into(), - name: "Weather Station".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, - MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), - (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, - MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::NextWeatherEventTime, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![ - (0u32, "NoStorm".into()), (1u32, "StormIncoming".into()), - (2u32, "InStorm".into()) - ] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: true, - has_atmosphere: false, - has_color_state: false, - has_lock_state: true, - has_mode_state: true, - has_on_off_state: true, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - -2082355173i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWindTurbine".into(), - prefab_hash: -2082355173i32, - desc: "The Stationeers wind turbine was first designed by Norsec atmospheric engineers, looking to create a wind-driven power generation system that would operate even on exceedingly low atmosphere worlds. The ultra-light blades respond to exceedingly low atmospheric densities, while being strong enough to function even under huge strain in much more demanding environments.\nWhile the wind turbine is optimized to produce power (up to 500W) even on low atmosphere worlds, it performs best in denser environments. Output varies with wind speed and, during storms, may increase dramatically (up to 10,000W), so be careful to design your power networks with that in mind." - .into(), - name: "Wind Turbine".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::PowerGeneration, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Power, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Data, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: false, - has_on_off_state: false, - has_open_state: false, - has_reagents: false, - }, - } - .into(), - ), - ( - 2056377335i32, - StructureLogicDeviceTemplate { - prefab: PrefabInfo { - prefab_name: "StructureWindowShutter".into(), - prefab_hash: 2056377335i32, - desc: "For those special, private moments, a window that can be closed to prying eyes. \n \nWhen closed, has the heat transfer characteristics of a basic wall. Requires power, and can be connected to logic systems." - .into(), - name: "Window Shutter".into(), - }, - structure: StructureInfo { small_grid: true }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![].into_iter().collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::RequiredPower, - MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), - (LogicType::PrefabHash, MemoryAccess::Read), - (LogicType::ReferenceId, MemoryAccess::Read), - (LogicType::NameHash, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![].into_iter().collect(), - device: DeviceInfo { - connection_list: vec![ - ConnectionInfo { typ : ConnectionType::Data, role : - ConnectionRole::None }, ConnectionInfo { typ : - ConnectionType::Power, role : ConnectionRole::None } - ] - .into_iter() - .collect(), - device_pins_length: None, - has_activate_state: false, - has_atmosphere: false, - has_color_state: false, - has_lock_state: false, - has_mode_state: true, - has_on_off_state: true, - has_open_state: true, - has_reagents: false, - }, - } - .into(), - ), - ( - 1700018136i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ToolPrinterMod".into(), - prefab_hash: 1700018136i32, - desc: "Apply to an Tool Manufactory with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." - .into(), - name: "Tool Printer Mod".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - 94730034i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "ToyLuna".into(), - prefab_hash: 94730034i32, - desc: "".into(), - name: "Toy Luna".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ( - -2083426457i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "UniformCommander".into(), - prefab_hash: -2083426457i32, - desc: "".into(), - name: "Uniform Commander".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Uniform, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "Access Card" - .into(), typ : Class::AccessCard }, SlotInfo { name : "Access Card" - .into(), typ : Class::AccessCard }, SlotInfo { name : "Credit Card" - .into(), typ : Class::CreditCard } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - -48342840i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "UniformMarine".into(), - prefab_hash: -48342840i32, - desc: "".into(), - name: "Marine Uniform".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Uniform, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "Access Card" - .into(), typ : Class::AccessCard }, SlotInfo { name : "Credit Card" - .into(), typ : Class::CreditCard } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 810053150i32, - ItemSlotsTemplate { - prefab: PrefabInfo { - prefab_name: "UniformOrangeJumpSuit".into(), - prefab_hash: 810053150i32, - desc: "".into(), - name: "Jump Suit (Orange)".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Uniform, - sorting_class: SortingClass::Clothing, - }, - thermal_info: None, - internal_atmo_info: None, - slots: vec![ - SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : - "".into(), typ : Class::None }, SlotInfo { name : "Access Card" - .into(), typ : Class::AccessCard }, SlotInfo { name : "Credit Card" - .into(), typ : Class::CreditCard } - ] - .into_iter() - .collect(), - } - .into(), - ), - ( - 789494694i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "WeaponEnergy".into(), - prefab_hash: 789494694i32, - desc: "".into(), - name: "Weapon Energy".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::On, MemoryAccess::ReadWrite), - (LogicType::ReferenceId, MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: None, - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -385323479i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "WeaponPistolEnergy".into(), - prefab_hash: -385323479i32, - desc: "0.Stun\n1.Kill".into(), - name: "Energy Pistol".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Stun".into()), (1u32, "Kill".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - 1154745374i32, - ItemLogicTemplate { - prefab: PrefabInfo { - prefab_name: "WeaponRifleEnergy".into(), - prefab_hash: 1154745374i32, - desc: "0.Stun\n1.Kill".into(), - name: "Energy Rifle".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Tools, - }, - thermal_info: None, - internal_atmo_info: None, - logic: LogicInfo { - logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), - (LogicSlotType::OccupantHash, MemoryAccess::Read), - (LogicSlotType::Quantity, MemoryAccess::Read), - (LogicSlotType::Damage, MemoryAccess::Read), - (LogicSlotType::Charge, MemoryAccess::Read), - (LogicSlotType::ChargeRatio, MemoryAccess::Read), - (LogicSlotType::Class, MemoryAccess::Read), - (LogicSlotType::MaxQuantity, MemoryAccess::Read), - (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()) - ] - .into_iter() - .collect(), - logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Open, - MemoryAccess::ReadWrite), (LogicType::Mode, - MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), - (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, - MemoryAccess::ReadWrite), (LogicType::ReferenceId, - MemoryAccess::Read) - ] - .into_iter() - .collect(), - modes: Some( - vec![(0u32, "Stun".into()), (1u32, "Kill".into())] - .into_iter() - .collect(), - ), - transmission_receiver: false, - wireless_logic: false, - circuit_holder: false, - }, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] - .into_iter() - .collect(), - } - .into(), - ), - ( - -1102977898i32, - ItemTemplate { - prefab: PrefabInfo { - prefab_name: "WeaponTorpedo".into(), - prefab_hash: -1102977898i32, - desc: "".into(), - name: "Torpedo".into(), - }, - item: ItemInfo { - consumable: false, - filter_type: None, - ingredient: false, - max_quantity: 1u32, - reagents: None, - slot_class: Class::Torpedo, - sorting_class: SortingClass::Default, - }, - thermal_info: None, - internal_atmo_info: None, - } - .into(), - ), - ]) + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::Output, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute, + role : ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1622183451i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureUprightWindTurbine".into(), + prefab_hash: 1622183451i32, + desc: "Norsec\'s basic wind turbine is an easily fabricated, rapidly deployed design that is strong enough to withstand the worst that environments can throw at it. \nWhile the wind turbine is optimized to produce power even on low atmosphere worlds (up to 200W), it performs best in denser environments. Output varies with wind speed, and during storms, may increase dramatically (up to 800W), so be careful to design your power networks with that in mind." + .into(), + name: "Upright Wind Turbine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PowerGeneration, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -692036078i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureValve".into(), + prefab_hash: -692036078i32, + desc: "".into(), + name: "Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -443130773i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureVendingMachine".into(), + prefab_hash: -443130773i32, + desc: "The Xigo-designed \'Slot Mate\' vending machine allows storage of almost any item, while also operating as a distribution point for working with Traders. You cannot trade without a vending machine, or its more advanced equivalent, the Refrigerated Vending Machine. Each vending machine can hold up to 100 stacks." + .into(), + name: "Vending Machine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![] + .into_iter().collect()), (4u32, vec![] .into_iter().collect()), + (5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter() + .collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![] + .into_iter().collect()), (9u32, vec![] .into_iter().collect()), + (10u32, vec![] .into_iter().collect()), (11u32, vec![] .into_iter() + .collect()), (12u32, vec![] .into_iter().collect()), (13u32, vec![] + .into_iter().collect()), (14u32, vec![] .into_iter().collect()), + (15u32, vec![] .into_iter().collect()), (16u32, vec![] .into_iter() + .collect()), (17u32, vec![] .into_iter().collect()), (18u32, vec![] + .into_iter().collect()), (19u32, vec![] .into_iter().collect()), + (20u32, vec![] .into_iter().collect()), (21u32, vec![] .into_iter() + .collect()), (22u32, vec![] .into_iter().collect()), (23u32, vec![] + .into_iter().collect()), (24u32, vec![] .into_iter().collect()), + (25u32, vec![] .into_iter().collect()), (26u32, vec![] .into_iter() + .collect()), (27u32, vec![] .into_iter().collect()), (28u32, vec![] + .into_iter().collect()), (29u32, vec![] .into_iter().collect()), + (30u32, vec![] .into_iter().collect()), (31u32, vec![] .into_iter() + .collect()), (32u32, vec![] .into_iter().collect()), (33u32, vec![] + .into_iter().collect()), (34u32, vec![] .into_iter().collect()), + (35u32, vec![] .into_iter().collect()), (36u32, vec![] .into_iter() + .collect()), (37u32, vec![] .into_iter().collect()), (38u32, vec![] + .into_iter().collect()), (39u32, vec![] .into_iter().collect()), + (40u32, vec![] .into_iter().collect()), (41u32, vec![] .into_iter() + .collect()), (42u32, vec![] .into_iter().collect()), (43u32, vec![] + .into_iter().collect()), (44u32, vec![] .into_iter().collect()), + (45u32, vec![] .into_iter().collect()), (46u32, vec![] .into_iter() + .collect()), (47u32, vec![] .into_iter().collect()), (48u32, vec![] + .into_iter().collect()), (49u32, vec![] .into_iter().collect()), + (50u32, vec![] .into_iter().collect()), (51u32, vec![] .into_iter() + .collect()), (52u32, vec![] .into_iter().collect()), (53u32, vec![] + .into_iter().collect()), (54u32, vec![] .into_iter().collect()), + (55u32, vec![] .into_iter().collect()), (56u32, vec![] .into_iter() + .collect()), (57u32, vec![] .into_iter().collect()), (58u32, vec![] + .into_iter().collect()), (59u32, vec![] .into_iter().collect()), + (60u32, vec![] .into_iter().collect()), (61u32, vec![] .into_iter() + .collect()), (62u32, vec![] .into_iter().collect()), (63u32, vec![] + .into_iter().collect()), (64u32, vec![] .into_iter().collect()), + (65u32, vec![] .into_iter().collect()), (66u32, vec![] .into_iter() + .collect()), (67u32, vec![] .into_iter().collect()), (68u32, vec![] + .into_iter().collect()), (69u32, vec![] .into_iter().collect()), + (70u32, vec![] .into_iter().collect()), (71u32, vec![] .into_iter() + .collect()), (72u32, vec![] .into_iter().collect()), (73u32, vec![] + .into_iter().collect()), (74u32, vec![] .into_iter().collect()), + (75u32, vec![] .into_iter().collect()), (76u32, vec![] .into_iter() + .collect()), (77u32, vec![] .into_iter().collect()), (78u32, vec![] + .into_iter().collect()), (79u32, vec![] .into_iter().collect()), + (80u32, vec![] .into_iter().collect()), (81u32, vec![] .into_iter() + .collect()), (82u32, vec![] .into_iter().collect()), (83u32, vec![] + .into_iter().collect()), (84u32, vec![] .into_iter().collect()), + (85u32, vec![] .into_iter().collect()), (86u32, vec![] .into_iter() + .collect()), (87u32, vec![] .into_iter().collect()), (88u32, vec![] + .into_iter().collect()), (89u32, vec![] .into_iter().collect()), + (90u32, vec![] .into_iter().collect()), (91u32, vec![] .into_iter() + .collect()), (92u32, vec![] .into_iter().collect()), (93u32, vec![] + .into_iter().collect()), (94u32, vec![] .into_iter().collect()), + (95u32, vec![] .into_iter().collect()), (96u32, vec![] .into_iter() + .collect()), (97u32, vec![] .into_iter().collect()), (98u32, vec![] + .into_iter().collect()), (99u32, vec![] .into_iter().collect()), + (100u32, vec![] .into_iter().collect()), (101u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RequestHash, + MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None }, SlotInfo { name : "Storage".into(), + typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None }, + SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name + : "Storage".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -321403609i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureVolumePump".into(), + prefab_hash: -321403609i32, + desc: "The volume pump pumps pumpable gases. It also separates out pipe networks into separate networks." + .into(), + name: "Volume Pump".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo + { typ : ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -858143148i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArch".into(), + prefab_hash: -858143148i32, + desc: "".into(), + name: "Wall (Arch)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1649708822i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchArrow".into(), + prefab_hash: 1649708822i32, + desc: "".into(), + name: "Wall (Arch Arrow)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1794588890i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchCornerRound".into(), + prefab_hash: 1794588890i32, + desc: "".into(), + name: "Wall (Arch Corner Round)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1963016580i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchCornerSquare".into(), + prefab_hash: -1963016580i32, + desc: "".into(), + name: "Wall (Arch Corner Square)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1281911841i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchCornerTriangle".into(), + prefab_hash: 1281911841i32, + desc: "".into(), + name: "Wall (Arch Corner Triangle)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1182510648i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchPlating".into(), + prefab_hash: 1182510648i32, + desc: "".into(), + name: "Wall (Arch Plating)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 782529714i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchTwoTone".into(), + prefab_hash: 782529714i32, + desc: "".into(), + name: "Wall (Arch Two Tone)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -739292323i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallCooler".into(), + prefab_hash: -739292323i32, + desc: "The Xigo Freezy Boi wall cooler complements the wall heater, which can only raise the temperature. The wall cooler functions by drawing heat from the surrounding atmosphere and adding that heat into its pipe network.\nIn order to run the wall cooler properly, you will need to connect pipes to the wall cooler and fill the connected pipe network with any type of gas. The gas\'s heat capacity and volume will determine how fast it reacts to temperature changes.\n\nEFFICIENCY\nThe higher the difference in temperature between the gas stored in the pipes and the room, the less efficient the wall cooler will be. So to keep the wall cooler running at an acceptable efficiency you will need to get rid of the heat that accumulates in the pipes connected to it. A common practice would be to run the pipes to the outside and use radiators on the outside section of the pipes to get rid of the heat.\nThe less efficient the wall cooler, the less power it consumes. It will consume 1010W at max efficiency. The wall cooler can be controlled by logic chips to run when the temperature hits a certain degree.\nERRORS\nIf the wall cooler is flashing an error then it is missing one of the following:\n\n- Pipe connection to the wall cooler.\n- Gas in the connected pipes, or pressure is too low.\n- Atmosphere in the surrounding environment or pressure is too low.\n\nFor more information about how to control temperatures, consult the temperature control Guides page." + .into(), + name: "Wall Cooler".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1635864154i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlat".into(), + prefab_hash: 1635864154i32, + desc: "".into(), + name: "Wall (Flat)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 898708250i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlatCornerRound".into(), + prefab_hash: 898708250i32, + desc: "".into(), + name: "Wall (Flat Corner Round)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 298130111i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlatCornerSquare".into(), + prefab_hash: 298130111i32, + desc: "".into(), + name: "Wall (Flat Corner Square)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2097419366i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlatCornerTriangle".into(), + prefab_hash: 2097419366i32, + desc: "".into(), + name: "Wall (Flat Corner Triangle)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1161662836i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlatCornerTriangleFlat".into(), + prefab_hash: -1161662836i32, + desc: "".into(), + name: "Wall (Flat Corner Triangle Flat)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1979212240i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallGeometryCorner".into(), + prefab_hash: 1979212240i32, + desc: "".into(), + name: "Wall (Geometry Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1049735537i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallGeometryStreight".into(), + prefab_hash: 1049735537i32, + desc: "".into(), + name: "Wall (Geometry Straight)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1602758612i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallGeometryT".into(), + prefab_hash: 1602758612i32, + desc: "".into(), + name: "Wall (Geometry T)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1427845483i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallGeometryTMirrored".into(), + prefab_hash: -1427845483i32, + desc: "".into(), + name: "Wall (Geometry T Mirrored)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 24258244i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallHeater".into(), + prefab_hash: 24258244i32, + desc: "The Xigo wall heater is a simple device that can be installed on a wall or frame and connected to power. When switched on, it will start heating the surrounding environment. It consumes 1010W of power and can be controlled by logic chips to run when the temperature hits a certain level." + .into(), + name: "Wall Heater".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1287324802i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallIron".into(), + prefab_hash: 1287324802i32, + desc: "".into(), + name: "Iron Wall (Type 1)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1485834215i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallIron02".into(), + prefab_hash: 1485834215i32, + desc: "".into(), + name: "Iron Wall (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 798439281i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallIron03".into(), + prefab_hash: 798439281i32, + desc: "".into(), + name: "Iron Wall (Type 3)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1309433134i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallIron04".into(), + prefab_hash: -1309433134i32, + desc: "".into(), + name: "Iron Wall (Type 4)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1492930217i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallLargePanel".into(), + prefab_hash: 1492930217i32, + desc: "".into(), + name: "Wall (Large Panel)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -776581573i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallLargePanelArrow".into(), + prefab_hash: -776581573i32, + desc: "".into(), + name: "Wall (Large Panel Arrow)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1860064656i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallLight".into(), + prefab_hash: -1860064656i32, + desc: "".into(), + name: "Wall Light".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1306415132i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallLightBattery".into(), + prefab_hash: -1306415132i32, + desc: "".into(), + name: "Wall Light (Battery)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1590330637i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedArch".into(), + prefab_hash: 1590330637i32, + desc: "".into(), + name: "Wall (Padded Arch)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1126688298i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedArchCorner".into(), + prefab_hash: -1126688298i32, + desc: "".into(), + name: "Wall (Padded Arch Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1171987947i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedArchLightFittingTop".into(), + prefab_hash: 1171987947i32, + desc: "".into(), + name: "Wall (Padded Arch Light Fitting Top)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1546743960i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedArchLightsFittings".into(), + prefab_hash: -1546743960i32, + desc: "".into(), + name: "Wall (Padded Arch Lights Fittings)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -155945899i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedCorner".into(), + prefab_hash: -155945899i32, + desc: "".into(), + name: "Wall (Padded Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1183203913i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedCornerThin".into(), + prefab_hash: 1183203913i32, + desc: "".into(), + name: "Wall (Padded Corner Thin)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 8846501i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedNoBorder".into(), + prefab_hash: 8846501i32, + desc: "".into(), + name: "Wall (Padded No Border)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 179694804i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedNoBorderCorner".into(), + prefab_hash: 179694804i32, + desc: "".into(), + name: "Wall (Padded No Border Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1611559100i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedThinNoBorder".into(), + prefab_hash: -1611559100i32, + desc: "".into(), + name: "Wall (Padded Thin No Border)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1769527556i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedThinNoBorderCorner".into(), + prefab_hash: 1769527556i32, + desc: "".into(), + name: "Wall (Padded Thin No Border Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2087628940i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedWindow".into(), + prefab_hash: 2087628940i32, + desc: "".into(), + name: "Wall (Padded Window)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -37302931i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedWindowThin".into(), + prefab_hash: -37302931i32, + desc: "".into(), + name: "Wall (Padded Window Thin)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 635995024i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPadding".into(), + prefab_hash: 635995024i32, + desc: "".into(), + name: "Wall (Padding)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1243329828i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddingArchVent".into(), + prefab_hash: -1243329828i32, + desc: "".into(), + name: "Wall (Padding Arch Vent)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 2024882687i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddingLightFitting".into(), + prefab_hash: 2024882687i32, + desc: "".into(), + name: "Wall (Padding Light Fitting)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1102403554i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddingThin".into(), + prefab_hash: -1102403554i32, + desc: "".into(), + name: "Wall (Padding Thin)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 26167457i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPlating".into(), + prefab_hash: 26167457i32, + desc: "".into(), + name: "Wall (Plating)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 619828719i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsAndHatch".into(), + prefab_hash: 619828719i32, + desc: "".into(), + name: "Wall (Small Panels And Hatch)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -639306697i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsArrow".into(), + prefab_hash: -639306697i32, + desc: "".into(), + name: "Wall (Small Panels Arrow)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 386820253i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsMonoChrome".into(), + prefab_hash: 386820253i32, + desc: "".into(), + name: "Wall (Small Panels Mono Chrome)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1407480603i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsOpen".into(), + prefab_hash: -1407480603i32, + desc: "".into(), + name: "Wall (Small Panels Open)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1709994581i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsTwoTone".into(), + prefab_hash: 1709994581i32, + desc: "".into(), + name: "Wall (Small Panels Two Tone)".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1177469307i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallVent".into(), + prefab_hash: -1177469307i32, + desc: "Used to mix atmospheres passively between two walls.".into(), + name: "Wall Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1178961954i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterBottleFiller".into(), + prefab_hash: -1178961954i32, + desc: "".into(), + name: "Water Bottle Filler".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1433754995i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterBottleFillerBottom".into(), + prefab_hash: 1433754995i32, + desc: "".into(), + name: "Water Bottle Filler Bottom".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -756587791i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterBottleFillerPowered".into(), + prefab_hash: -756587791i32, + desc: "".into(), + name: "Waterbottle Filler".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1986658780i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterBottleFillerPoweredBottom".into(), + prefab_hash: 1986658780i32, + desc: "".into(), + name: "Waterbottle Filler".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()), (1u32, + vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, + MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, + MemoryAccess::Read), (LogicSlotType::ReferenceId, + MemoryAccess::Read)] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -517628750i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterDigitalValve".into(), + prefab_hash: -517628750i32, + desc: "".into(), + name: "Liquid Digital Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 433184168i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterPipeMeter".into(), + prefab_hash: 433184168i32, + desc: "".into(), + name: "Liquid Pipe Meter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 887383294i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterPurifier".into(), + prefab_hash: 887383294i32, + desc: "Cleans Polluted Water and outputs Water. The purification process requires Charcoal which can be added to the machine via the import bin. The procesing throughput can be improved by increasing the gas pressure of the input pipe relative to the gas pressure of the output pipe." + .into(), + name: "Water Purifier".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::Ore }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, ConnectionInfo + { typ : ConnectionType::Chute, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1369060582i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterWallCooler".into(), + prefab_hash: -1369060582i32, + desc: "".into(), + name: "Liquid Wall Cooler".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, + MemoryAccess::Read), (LogicSlotType::MaxQuantity, + MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1997212478i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWeatherStation".into(), + prefab_hash: 1997212478i32, + desc: "0.NoStorm\n1.StormIncoming\n2.InStorm".into(), + name: "Weather Station".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::NextWeatherEventTime, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "NoStorm".into()), (1u32, "StormIncoming".into()), (2u32, + "InStorm".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -2082355173i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWindTurbine".into(), + prefab_hash: -2082355173i32, + desc: "The Stationeers wind turbine was first designed by Norsec atmospheric engineers, looking to create a wind-driven power generation system that would operate even on exceedingly low atmosphere worlds. The ultra-light blades respond to exceedingly low atmospheric densities, while being strong enough to function even under huge strain in much more demanding environments.\nWhile the wind turbine is optimized to produce power (up to 500W) even on low atmosphere worlds, it performs best in denser environments. Output varies with wind speed and, during storms, may increase dramatically (up to 10,000W), so be careful to design your power networks with that in mind." + .into(), + name: "Wind Turbine".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PowerGeneration, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 2056377335i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWindowShutter".into(), + prefab_hash: 2056377335i32, + desc: "For those special, private moments, a window that can be closed to prying eyes. \n \nWhen closed, has the heat transfer characteristics of a basic wall. Requires power, and can be connected to logic systems." + .into(), + name: "Window Shutter".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power, + role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + 1700018136i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ToolPrinterMod".into(), + prefab_hash: 1700018136i32, + desc: "Apply to an Tool Manufactory with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." + .into(), + name: "Tool Printer Mod".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 94730034i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ToyLuna".into(), + prefab_hash: 94730034i32, + desc: "".into(), + name: "Toy Luna".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2083426457i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "UniformCommander".into(), + prefab_hash: -2083426457i32, + desc: "".into(), + name: "Uniform Commander".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Uniform, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "Access Card".into(), typ + : Class::AccessCard }, SlotInfo { name : "Access Card".into(), typ : + Class::AccessCard }, SlotInfo { name : "Credit Card".into(), typ : + Class::CreditCard } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -48342840i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "UniformMarine".into(), + prefab_hash: -48342840i32, + desc: "".into(), + name: "Marine Uniform".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Uniform, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "Access Card".into(), typ + : Class::AccessCard }, SlotInfo { name : "Credit Card".into(), typ : + Class::CreditCard } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 810053150i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "UniformOrangeJumpSuit".into(), + prefab_hash: 810053150i32, + desc: "".into(), + name: "Jump Suit (Orange)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Uniform, + sorting_class: SortingClass::Clothing, + }, + thermal_info: None, + internal_atmo_info: None, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : "Access Card".into(), typ + : Class::AccessCard }, SlotInfo { name : "Credit Card".into(), typ : + Class::CreditCard } + ] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 789494694i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "WeaponEnergy".into(), + prefab_hash: 789494694i32, + desc: "".into(), + name: "Weapon Energy".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -385323479i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "WeaponPistolEnergy".into(), + prefab_hash: -385323479i32, + desc: "0.Stun\n1.Kill".into(), + name: "Energy Pistol".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Stun".into()), (1u32, "Kill".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + 1154745374i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "WeaponRifleEnergy".into(), + prefab_hash: 1154745374i32, + desc: "0.Stun\n1.Kill".into(), + name: "Energy Rifle".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, + MemoryAccess::Read), (LogicSlotType::ChargeRatio, + MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Stun".into()), (1u32, "Kill".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ); + map.insert( + -1102977898i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "WeaponTorpedo".into(), + prefab_hash: -1102977898i32, + desc: "".into(), + name: "Torpedo".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Torpedo, + sorting_class: SortingClass::Default, + }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map } diff --git a/stationeers_data/src/enums/basic.rs b/stationeers_data/src/enums/basic.rs index 13cbf0f..46d5f1e 100644 --- a/stationeers_data/src/enums/basic.rs +++ b/stationeers_data/src/enums/basic.rs @@ -1,3 +1,17 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run +// +// `cargo xtask generate -m enums` +// +// from the workspace to regenerate +// +// ================================================= + use serde_derive::{Deserialize, Serialize}; use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; #[cfg(feature = "tsify")] @@ -23,8 +37,7 @@ use super::script::{LogicSlotType, LogicType}; Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum AirConditioningMode { @@ -71,8 +84,7 @@ impl TryFrom for AirConditioningMode { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum AirControlMode { @@ -123,8 +135,7 @@ impl TryFrom for AirControlMode { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum ColorType { @@ -199,8 +210,7 @@ impl TryFrom for ColorType { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum DaylightSensorMode { @@ -250,8 +260,7 @@ impl TryFrom for DaylightSensorMode { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum ElevatorMode { @@ -298,8 +307,7 @@ impl TryFrom for ElevatorMode { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum EntityState { @@ -349,8 +357,7 @@ impl TryFrom for EntityState { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u32)] pub enum GasType { @@ -442,8 +449,7 @@ impl TryFrom for GasType { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum PowerMode { @@ -497,8 +503,7 @@ impl TryFrom for PowerMode { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum PrinterInstruction { @@ -570,8 +575,7 @@ impl TryFrom for PrinterInstruction { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum ReEntryProfile { @@ -626,8 +630,7 @@ impl TryFrom for ReEntryProfile { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum RobotMode { @@ -688,8 +691,7 @@ impl TryFrom for RobotMode { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum RocketMode { @@ -747,8 +749,7 @@ impl TryFrom for RocketMode { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum Class { @@ -908,8 +909,7 @@ impl TryFrom for Class { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum SorterInstruction { @@ -970,8 +970,7 @@ impl TryFrom for SorterInstruction { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum SortingClass { @@ -1044,8 +1043,7 @@ impl TryFrom for SortingClass { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum SoundAlert { @@ -1222,8 +1220,7 @@ impl TryFrom for SoundAlert { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum LogicTransmitterMode { @@ -1269,8 +1266,7 @@ impl TryFrom for LogicTransmitterMode { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum VentDirection { @@ -1314,8 +1310,7 @@ impl TryFrom for VentDirection { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum ConditionOperation { diff --git a/stationeers_data/src/enums/prefabs.rs b/stationeers_data/src/enums/prefabs.rs index 920933a..d3ed521 100644 --- a/stationeers_data/src/enums/prefabs.rs +++ b/stationeers_data/src/enums/prefabs.rs @@ -1,3 +1,17 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run +// +// `cargo xtask generate -m enums` +// +// from the workspace to regenerate +// +// ================================================= + use serde_derive::{Deserialize, Serialize}; use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; #[cfg(feature = "tsify")] @@ -22,8 +36,7 @@ use wasm_bindgen::prelude::*; Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(i32)] pub enum StationpediaPrefab { diff --git a/stationeers_data/src/enums/script.rs b/stationeers_data/src/enums/script.rs index 81ad20b..293729a 100644 --- a/stationeers_data/src/enums/script.rs +++ b/stationeers_data/src/enums/script.rs @@ -1,3 +1,17 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run +// +// `cargo xtask generate -m enums` +// +// from the workspace to regenerate +// +// ================================================= + use serde_derive::{Deserialize, Serialize}; use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; #[cfg(feature = "tsify")] @@ -22,8 +36,7 @@ use wasm_bindgen::prelude::*; Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum LogicBatchMethod { @@ -73,8 +86,7 @@ impl TryFrom for LogicBatchMethod { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum LogicReagentMode { @@ -125,8 +137,7 @@ impl TryFrom for LogicReagentMode { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u8)] pub enum LogicSlotType { @@ -320,8 +331,7 @@ impl TryFrom for LogicSlotType { Serialize, Deserialize )] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf)] #[repr(u16)] pub enum LogicType { diff --git a/stationeers_data/src/templates.rs b/stationeers_data/src/templates.rs index 3a25ab1..b079e9d 100644 --- a/stationeers_data/src/templates.rs +++ b/stationeers_data/src/templates.rs @@ -12,8 +12,7 @@ use tsify::Tsify; use wasm_bindgen::prelude::*; #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[serde(untagged)] pub enum ObjectTemplate { Structure(StructureTemplate), @@ -173,8 +172,7 @@ impl From for ObjectTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct HumanTemplate { pub prefab: PrefabInfo, pub species: Species, @@ -182,8 +180,7 @@ pub struct HumanTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct PrefabInfo { pub prefab_name: String, pub prefab_hash: i32, @@ -192,16 +189,14 @@ pub struct PrefabInfo { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct SlotInfo { pub name: String, pub typ: Class, } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct LogicInfo { pub logic_slot_types: BTreeMap>, pub logic_types: BTreeMap, @@ -212,8 +207,7 @@ pub struct LogicInfo { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemInfo { pub consumable: bool, pub filter_type: Option, @@ -225,8 +219,7 @@ pub struct ItemInfo { } #[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ConnectionInfo { pub typ: ConnectionType, pub role: ConnectionRole, @@ -234,8 +227,7 @@ pub struct ConnectionInfo { #[allow(clippy::struct_excessive_bools)] #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct DeviceInfo { pub connection_list: Vec, pub device_pins_length: Option, @@ -250,16 +242,14 @@ pub struct DeviceInfo { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ConsumerInfo { pub consumed_resouces: Vec, pub processed_reagents: Vec, } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct RecipeRange { pub start: f64, pub stop: f64, @@ -267,8 +257,7 @@ pub struct RecipeRange { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct RecipeGasMix { pub rule: i64, pub is_any: bool, @@ -277,8 +266,7 @@ pub struct RecipeGasMix { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct Recipe { pub tier: MachineTier, pub time: f64, @@ -291,23 +279,20 @@ pub struct Recipe { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct FabricatorInfo { pub tier: MachineTier, pub recipes: BTreeMap, } #[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct StructureInfo { pub small_grid: bool, } #[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct Instruction { pub description: String, pub typ: String, @@ -315,8 +300,7 @@ pub struct Instruction { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct MemoryInfo { pub instructions: Option>, pub memory_access: MemoryAccess, @@ -324,31 +308,27 @@ pub struct MemoryInfo { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ThermalInfo { pub convection_factor: f32, pub radiation_factor: f32, } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct InternalAtmoInfo { pub volume: f32, } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct SuitInfo { pub hygine_reduction_multiplier: f32, pub waste_max_pressure: f32, } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct StructureTemplate { pub prefab: PrefabInfo, pub structure: StructureInfo, @@ -357,8 +337,7 @@ pub struct StructureTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct StructureSlotsTemplate { pub prefab: PrefabInfo, pub structure: StructureInfo, @@ -368,8 +347,7 @@ pub struct StructureSlotsTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct StructureLogicTemplate { pub prefab: PrefabInfo, pub structure: StructureInfo, @@ -380,8 +358,7 @@ pub struct StructureLogicTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct StructureLogicDeviceTemplate { pub prefab: PrefabInfo, pub structure: StructureInfo, @@ -393,8 +370,7 @@ pub struct StructureLogicDeviceTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct StructureLogicDeviceConsumerTemplate { pub prefab: PrefabInfo, pub structure: StructureInfo, @@ -408,8 +384,7 @@ pub struct StructureLogicDeviceConsumerTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct StructureLogicDeviceMemoryTemplate { pub prefab: PrefabInfo, pub structure: StructureInfo, @@ -422,8 +397,7 @@ pub struct StructureLogicDeviceMemoryTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct StructureCircuitHolderTemplate { pub prefab: PrefabInfo, pub structure: StructureInfo, @@ -435,8 +409,7 @@ pub struct StructureCircuitHolderTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct StructureLogicDeviceConsumerMemoryTemplate { pub prefab: PrefabInfo, pub structure: StructureInfo, @@ -451,8 +424,7 @@ pub struct StructureLogicDeviceConsumerMemoryTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemTemplate { pub prefab: PrefabInfo, pub item: ItemInfo, @@ -461,8 +433,7 @@ pub struct ItemTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemSlotsTemplate { pub prefab: PrefabInfo, pub item: ItemInfo, @@ -472,8 +443,7 @@ pub struct ItemSlotsTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemConsumerTemplate { pub prefab: PrefabInfo, pub item: ItemInfo, @@ -484,8 +454,7 @@ pub struct ItemConsumerTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemLogicTemplate { pub prefab: PrefabInfo, pub item: ItemInfo, @@ -496,8 +465,7 @@ pub struct ItemLogicTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemLogicMemoryTemplate { pub prefab: PrefabInfo, pub item: ItemInfo, @@ -509,8 +477,7 @@ pub struct ItemLogicMemoryTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemCircuitHolderTemplate { pub prefab: PrefabInfo, pub item: ItemInfo, @@ -521,8 +488,7 @@ pub struct ItemCircuitHolderTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemSuitTemplate { pub prefab: PrefabInfo, pub item: ItemInfo, @@ -533,8 +499,7 @@ pub struct ItemSuitTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemSuitLogicTemplate { pub prefab: PrefabInfo, pub item: ItemInfo, @@ -546,8 +511,7 @@ pub struct ItemSuitLogicTemplate { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[cfg_attr(feature = "tsify", derive(Tsify))] -#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] +#[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ItemSuitCircuitHolderTemplate { pub prefab: PrefabInfo, pub item: ItemInfo, diff --git a/xtask/src/generate.rs b/xtask/src/generate.rs index ce26041..4016318 100644 --- a/xtask/src/generate.rs +++ b/xtask/src/generate.rs @@ -52,7 +52,7 @@ pub fn generate( let enums_files = enums::generate(&pedia, &enums, workspace)?; eprintln!("Formatting generated files..."); for file in &enums_files { - prepend_generated_comment_and_format(file)?; + prepend_generated_comment_and_format(file, "enums")?; } return Ok(()); } @@ -61,18 +61,18 @@ pub fn generate( eprintln!("generating database..."); let database_files = database::generate_database(&pedia, &enums, workspace)?; - generated_files.extend(database_files); + generated_files.extend(database_files.into_iter().map(|path| (path, "database"))); } if modules.contains(&"instructions") { eprintln!("generating instructions..."); let inst_files = instructions::generate_instructions(&pedia, workspace)?; - generated_files.extend(inst_files); + generated_files.extend(inst_files.into_iter().map(|path| (path, "instructions"))); } eprintln!("Formatting generated files..."); - for file in &generated_files { - prepend_generated_comment_and_format(file)?; + for (file, module) in &generated_files { + prepend_generated_comment_and_format(file, module)?; } Ok(()) } @@ -98,29 +98,33 @@ fn format_rust(content: impl ToTokens) -> color_eyre::Result { Ok(prettyplease::unparse(&content)) } -fn prepend_generated_comment_and_format(file_path: &std::path::Path) -> color_eyre::Result<()> { +fn prepend_generated_comment_and_format(file_path: &std::path::Path, module: &str) -> 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 src = syn::parse_file(&std::fs::read_to_string(file_path)?)?; - let formated = format_rust(quote::quote! { - // ================================================= - // !! <-----> DO NOT MODIFY <-----> !! - // - // This module was automatically generated by an - // xtask - // - // run `cargo xtask generate` from the workspace - // to regenerate - // - // ================================================= + let formated = format_rust(src)?; - #src - })?; - - write!(&mut tmp, "{formated}")?; + write!(&mut tmp, "\ + // =================================================\n\ + // !! <-----> DO NOT MODIFY <-----> !!\n\ + //\n\ + // This module was automatically generated by an\n\ + // xtask\n\ + //\n\ + // run\n\ + //\n\ + // `cargo xtask generate -m {module}` \n\ + //\n\ + // from the workspace to regenerate\n\ + //\n\ + // =================================================\n\ + \n\ + {formated}\ + " + )?; } std::fs::remove_file(file_path)?; std::fs::rename(&tmp_path, file_path)?; diff --git a/xtask/src/generate/database.rs b/xtask/src/generate/database.rs index efc9a2c..73b1746 100644 --- a/xtask/src/generate/database.rs +++ b/xtask/src/generate/database.rs @@ -229,9 +229,9 @@ fn write_prefab_map( writer, "{}", quote! { - use crate::enums::script_enums::*; - use crate::enums::basic_enums::*; - use crate::enums::{MemoryAccess, ConnectionType, ConnectionRole}; + use crate::enums::script::*; + use crate::enums::basic::*; + use crate::enums::{MemoryAccess, ConnectionType, ConnectionRole, MachineTier}; use crate::templates::*; } )?; @@ -241,10 +241,7 @@ fn write_prefab_map( let hash = prefab.prefab().prefab_hash; let obj = syn::parse_str::(&uneval::to_string(prefab)?)?; let entry = quote! { - ( - #hash, - #obj.into(), - ) + map.insert(#hash, #obj.into()); }; Ok(entry) }) @@ -255,9 +252,9 @@ fn write_prefab_map( quote! { pub fn build_prefab_database() -> std::collections::BTreeMap { #[allow(clippy::unreadable_literal)] - std::collections::BTreeMap::from([ - #(#entries),* - ]) + let mut map: std::collections::BTreeMap = std::collections::BTreeMap::new(); + #(#entries)* + map } }, )?; diff --git a/xtask/src/generate/enums.rs b/xtask/src/generate/enums.rs index 8dd44b2..ba49b5a 100644 --- a/xtask/src/generate/enums.rs +++ b/xtask/src/generate/enums.rs @@ -433,8 +433,7 @@ where "{}", quote! { #[derive(#(#derives),*)] - #[cfg_attr(feature = "tsify", derive(Tsify))] - #[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] + #[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #additional_strum #[repr(#repr)] pub enum #name { diff --git a/xtask/src/generate/instructions.rs b/xtask/src/generate/instructions.rs index 4555a76..e596b51 100644 --- a/xtask/src/generate/instructions.rs +++ b/xtask/src/generate/instructions.rs @@ -13,7 +13,8 @@ pub fn generate_instructions( .join("ic10emu") .join("src") .join("vm") - .join("instructions"); + .join("instructions") + .join("codegen"); if !instructions_path.exists() { std::fs::create_dir(&instructions_path)?; } @@ -84,8 +85,7 @@ fn write_instructions_enum( "{}", quote::quote! {#[derive(Debug, Display, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Serialize, Deserialize)] #[derive(EnumIter, EnumString, EnumProperty, FromRepr)] - #[cfg_attr(feature = "tsify", derive(Tsify))] - #[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))] + #[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] #[strum(use_phf, serialize_all = "lowercase")] #[serde(rename_all = "lowercase")] pub enum InstructionOp {