From b1c9db278d08c2b8ce14bd97a435304e2481cc0d Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Mon, 19 Aug 2024 22:22:39 -0700 Subject: [PATCH] refactor(frontend) finish signal conversion, fix passing data to VM Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- Cargo.lock | 16 +- cspell.json | 149 +- ic10emu/Cargo.toml | 4 +- ic10emu/src/interpreter/instructions.rs | 4 +- ic10emu/src/network.rs | 8 + ic10emu/src/vm/object/generic/traits.rs | 2 +- ic10emu/src/vm/object/humans.rs | 2 +- ic10emu/src/vm/object/macros.rs | 10 +- .../stationpedia/structs/circuit_holder.rs | 2 +- ic10emu/src/vm/object/templates.rs | 14 + ic10emu/src/vm/object/traits.rs | 8 +- ic10emu_wasm/Cargo.toml | 7 +- ic10emu_wasm/build.rs | 92 - stationeers_data/src/database/prefab_map.rs | 3387 +++++++++++------ stationeers_data/src/enums/basic.rs | 15 +- stationeers_data/src/enums/prefabs.rs | 349 +- stationeers_data/src/enums/script.rs | 10 +- stationeers_data/src/lib.rs | 1 + stationeers_data/src/templates.rs | 6 +- www/cspell.json | 9 + www/package.json | 1 + www/pnpm-lock.yaml | 258 ++ www/rsbuild.config.ts | 3 +- www/src/scss/styles.scss | 36 +- www/src/ts/presets/demo.ts | 22 +- www/src/ts/session.ts | 18 +- www/src/ts/utils.ts | 21 + www/src/ts/virtualMachine/baseDevice.ts | 76 +- www/src/ts/virtualMachine/controls.ts | 109 +- www/src/ts/virtualMachine/device/card.ts | 78 +- www/src/ts/virtualMachine/device/dbutils.ts | 2 +- .../ts/virtualMachine/device/deviceList.ts | 112 +- www/src/ts/virtualMachine/device/fields.ts | 4 +- www/src/ts/virtualMachine/device/pins.ts | 4 +- www/src/ts/virtualMachine/device/slot.ts | 10 +- .../ts/virtualMachine/device/slotAddDialog.ts | 226 +- www/src/ts/virtualMachine/device/template.ts | 236 +- www/src/ts/virtualMachine/index.ts | 98 +- www/src/ts/virtualMachine/jsonErrorUtils.ts | 192 + www/src/ts/virtualMachine/prefabDatabase.ts | 1591 ++++++-- www/src/ts/virtualMachine/registers.ts | 73 +- www/src/ts/virtualMachine/stack.ts | 61 +- www/src/ts/virtualMachine/vmWorker.ts | 10 +- xtask/src/generate/database.rs | 22 +- xtask/src/stationpedia.rs | 14 +- 45 files changed, 5009 insertions(+), 2363 deletions(-) delete mode 100644 ic10emu_wasm/build.rs create mode 100644 www/src/ts/virtualMachine/jsonErrorUtils.ts diff --git a/Cargo.lock b/Cargo.lock index a8ba1fc..a12273f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -621,7 +621,6 @@ dependencies = [ "color-eyre", "const-crc32", "getrandom", - "ic10emu", "itertools", "macro_rules_attribute", "paste", @@ -651,14 +650,13 @@ dependencies = [ "itertools", "js-sys", "serde", - "serde-wasm-bindgen", + "serde-wasm-bindgen 0.6.5", "serde_derive", "serde_ignored", "serde_json", "serde_path_to_error", "serde_with", "stationeers_data", - "strum", "thiserror", "tsify", "wasm-bindgen", @@ -1280,6 +1278,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde-wasm-bindgen" version = "0.6.5" @@ -1796,6 +1805,7 @@ checksum = "d6b26cf145f2f3b9ff84e182c448eaf05468e247f148cf3d2a7d67d78ff023a0" dependencies = [ "gloo-utils", "serde", + "serde-wasm-bindgen 0.5.0", "serde_json", "tsify-macros", "wasm-bindgen", diff --git a/cspell.json b/cspell.json index 104950d..db8a446 100644 --- a/cspell.json +++ b/cspell.json @@ -1 +1,148 @@ -{"language":"en","flagWords":[],"version":"0.2","words":["Astroloy","Autolathe","bapal","bapz","bapzal","batchmode","batchmodes","bdns","bdnsal","bdse","bdseal","beqal","beqz","beqzal","bgeal","bgez","bgezal","bgtal","bgtz","bgtzal","bindgen","bleal","blez","blezal","bltal","bltz","bltzal","bnaal","bnan","bnaz","bnazal","bneal","bnez","bnezal","brap","brapz","brdns","brdse","breq","breqz","brge","brgez","brgt","brgtz","brle","brlez","brlt","brltz","brna","brnan","brnaz","brne","brnez","Circuitboard","codegen","conv","cstyle","endpos","getd","Hardsuit","hashables","inext","inextp","infile","itertools","jetpack","kbshortcutmenu","Keybind","lbns","logicable","logictype","logictypes","lzma","Mineables","mscorlib","MSEED","ninf","nomatch","oprs","overcolumn","Overlength","pedia","peekable","prec","preproc","putd","QUICKFIX","reagentmode","reagentmodes","repr","retval","rocketstation","sapz","sattellite","sdns","sdse","searchbox","searchbtn","seqz","serde","settingsmenu","sgez","sgtz","slez","slotlogic","slotlogicable","LogicSlotType","LogicSlotTypes","slottype","sltz","snan","snanz","snaz","snez","splitn","Stationeers","stationpedia","stdweb","thiserror","tokentype","trunc","Tsify","whos","Depressurising","Pressurising","logicslottypes","lparen","rparen","hstack","dylib"]} +{ + "language": "en", + "flagWords": [], + "version": "0.2", + "words": [ + "arn't", + "Astroloy", + "Atmo", + "Autolathe", + "Autotagged", + "bapal", + "bapz", + "bapzal", + "batchmode", + "batchmodes", + "bdns", + "bdnsal", + "bdse", + "bdseal", + "beqal", + "beqz", + "beqzal", + "bgeal", + "bgez", + "bgezal", + "bgtal", + "bgtz", + "bgtzal", + "bindgen", + "bleal", + "blez", + "blezal", + "bltal", + "bltz", + "bltzal", + "bnaal", + "bnan", + "bnaz", + "bnazal", + "bneal", + "bnez", + "bnezal", + "brap", + "brapz", + "brdns", + "brdse", + "breq", + "breqz", + "brge", + "brgez", + "brgt", + "brgtz", + "brle", + "brlez", + "brlt", + "brltz", + "brna", + "brnan", + "brnaz", + "brne", + "brnez", + "Circuitboard", + "codegen", + "conv", + "cstyle", + "Depressurising", + "dylib", + "endpos", + "getd", + "Hardsuit", + "hashables", + "hstack", + "impls", + "indexmap", + "inext", + "inextp", + "infile", + "Instructable", + "intf", + "itertools", + "jetpack", + "kbshortcutmenu", + "Keybind", + "lbns", + "logicable", + "LogicSlotType", + "logicslottypes", + "LogicSlotTypes", + "logictype", + "logictypes", + "lparen", + "lzma", + "Mineables", + "mscorlib", + "MSEED", + "ninf", + "nomatch", + "nops", + "oprs", + "overcolumn", + "Overlength", + "pedia", + "peekable", + "prec", + "preproc", + "Pressurising", + "putd", + "QUICKFIX", + "reagentmode", + "reagentmodes", + "repr", + "retval", + "rocketstation", + "rparen", + "sapz", + "sattellite", + "sdns", + "sdse", + "searchbox", + "searchbtn", + "seqz", + "serde", + "settingsmenu", + "sgez", + "sgtz", + "slez", + "slotlogic", + "slotlogicable", + "slottype", + "sltz", + "snan", + "snanz", + "snaz", + "snez", + "splitn", + "Stationeers", + "stationpedia", + "stdweb", + "tbody", + "thiserror", + "tokentype", + "toolbelt", + "trunc", + "Tsify", + "uneval", + "whos" + ] +} diff --git a/ic10emu/Cargo.toml b/ic10emu/Cargo.toml index 39bd02f..b001d41 100644 --- a/ic10emu/Cargo.toml +++ b/ic10emu/Cargo.toml @@ -29,7 +29,7 @@ time = { version = "0.3.36", features = [ "serde", "local-offset", ] } -tsify = { version = "0.4.5", optional = true, features = ["json"] } +tsify = { version = "0.4.5", optional = true, features = ["js"] } wasm-bindgen = { version = "0.2.92", optional = true } [target.'cfg(target_arch = "wasm32")'.dependencies] @@ -46,7 +46,7 @@ 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"] } +# ic10emu = { path = ".", features = ["prefab_database"] } [features] default = [] diff --git a/ic10emu/src/interpreter/instructions.rs b/ic10emu/src/interpreter/instructions.rs index 079f2c6..f36df66 100644 --- a/ic10emu/src/interpreter/instructions.rs +++ b/ic10emu/src/interpreter/instructions.rs @@ -2540,7 +2540,7 @@ impl LrInstruction for T { .as_reagent_interface() .ok_or(ICError::NotReagentReadable(*logicable.get_id()))?; reagent_interface - .get_current_recipie() + .get_current_recipe() .iter() .find(|(hash, _)| *hash as f64 == int) .map(|(_, quantity)| *quantity) @@ -2686,7 +2686,7 @@ impl HcfInstruction for T { .borrow_mut() .as_mut_circuit_holder() .ok_or(ICError::CircuitHolderNotLogicable(*self.get_id()))? - .hault_and_catch_fire(); + .halt_and_catch_fire(); } self.set_state(ICState::HasCaughtFire); Ok(()) diff --git a/ic10emu/src/network.rs b/ic10emu/src/network.rs index 3b6c010..a7e98a0 100644 --- a/ic10emu/src/network.rs +++ b/ic10emu/src/network.rs @@ -53,6 +53,9 @@ pub enum Connection { PipeLiquid { role: ConnectionRole, }, + RoboticArmRail { + role: ConnectionRole, + }, #[default] None, } @@ -83,6 +86,7 @@ impl Connection { ConnectionType::LandingPad => Self::LandingPad { role }, ConnectionType::LaunchPad => Self::LaunchPad { role }, ConnectionType::PipeLiquid => Self::PipeLiquid { role }, + ConnectionType::RoboticArmRail => Self::RoboticArmRail { role }, } } @@ -140,6 +144,10 @@ impl Connection { typ: ConnectionType::LaunchPad, role: *role, }, + Self::RoboticArmRail { role } => ConnectionInfo { + typ: ConnectionType::RoboticArmRail, + role: *role + }, } } diff --git a/ic10emu/src/vm/object/generic/traits.rs b/ic10emu/src/vm/object/generic/traits.rs index a74a555..7f170a6 100644 --- a/ic10emu/src/vm/object/generic/traits.rs +++ b/ic10emu/src/vm/object/generic/traits.rs @@ -701,7 +701,7 @@ where fn get_ic(&self) -> Option { self.get_ic_gw() } - fn hault_and_catch_fire(&mut self) { + fn halt_and_catch_fire(&mut self) { self.hault_and_catch_fire_gw() } } diff --git a/ic10emu/src/vm/object/humans.rs b/ic10emu/src/vm/object/humans.rs index 10a1b06..d66a0b4 100644 --- a/ic10emu/src/vm/object/humans.rs +++ b/ic10emu/src/vm/object/humans.rs @@ -327,7 +327,7 @@ impl Human for HumanPlayer { fn set_hygiene(&mut self, hygiene: f32) { self.hygiene = hygiene.clamp(0.0, MAX_HYGIENE); } - fn hygine_state(&self) -> StatState { + fn hygiene_state(&self) -> StatState { if self.hygiene < CRITICAL_HYGIENE { return StatState::Critical; } diff --git a/ic10emu/src/vm/object/macros.rs b/ic10emu/src/vm/object/macros.rs index 5b0d2c5..830409f 100644 --- a/ic10emu/src/vm/object/macros.rs +++ b/ic10emu/src/vm/object/macros.rs @@ -22,13 +22,13 @@ macro_rules! object_trait { paste::paste! { $( - #[doc = "Return a `& dyn " $trt "` if implimented by the object"] + #[doc = "Return a `& dyn " $trt "` if implemented by the object"] #[inline(always)] fn [](&self) -> Option<[<$trt Ref>]> { None } - #[doc = "Return a `&mut dyn " $trt "` if implimented by the object"] + #[doc = "Return a `&mut dyn " $trt "` if implemented by the object"] #[inline(always)] fn [](&mut self) -> Option<[<$trt RefMut>]> { None @@ -74,7 +74,7 @@ macro_rules! object_trait { } } - /// call func on the dyn refrence or a borrow of the vm object + /// call func on the dyn reference or a borrow of the vm object pub fn map(&self, mut func: F ) -> R where F: std::ops::FnMut(& dyn $trait_name) -> R @@ -103,12 +103,12 @@ macro_rules! object_trait { } pub fn get_id(&self) -> u32 { match self { - Self::DynRef(refrence) => *refrence.get_id(), + Self::DynRef(reference) => *reference.get_id(), Self::VMObject(obj) => *obj.borrow().get_id(), } } - /// call func on the dyn refrence or a borrow of the vm object + /// call func on the dyn reference or a borrow of the vm object pub fn map(&mut self, mut func: F ) -> R where F: std::ops::FnMut(&mut dyn $trait_name) -> R diff --git a/ic10emu/src/vm/object/stationpedia/structs/circuit_holder.rs b/ic10emu/src/vm/object/stationpedia/structs/circuit_holder.rs index 9940952..0072712 100644 --- a/ic10emu/src/vm/object/stationpedia/structs/circuit_holder.rs +++ b/ic10emu/src/vm/object/stationpedia/structs/circuit_holder.rs @@ -411,7 +411,7 @@ impl CircuitHolder for StructureCircuitHousing { .and_then(|info| self.vm.get_object(info.id)) } - fn hault_and_catch_fire(&mut self) { + fn halt_and_catch_fire(&mut self) { // TODO: do something here?? } } diff --git a/ic10emu/src/vm/object/templates.rs b/ic10emu/src/vm/object/templates.rs index 7b6f1ba..5cb1307 100644 --- a/ic10emu/src/vm/object/templates.rs +++ b/ic10emu/src/vm/object/templates.rs @@ -72,6 +72,8 @@ pub struct ObjectInfo { pub prefab: Option, pub prefab_hash: Option, pub slots: Option>, + pub parent_slot: Option<(ObjectID, u32)>, + pub root_parent_human: Option, pub damage: Option, pub device_pins: Option>, pub connections: Option>, @@ -96,6 +98,8 @@ impl From<&VMObject> for ObjectInfo { prefab: Some(obj_ref.get_prefab().value.clone()), prefab_hash: Some(obj_ref.get_prefab().hash), slots: None, + parent_slot: None, + root_parent_human: None, damage: None, device_pins: None, connections: None, @@ -136,6 +140,8 @@ impl ObjectInfo { prefab: Some(prefab_name), prefab_hash: Some(prefab_hash), slots: None, + parent_slot: None, + root_parent_human: None, damage: None, device_pins: None, connections: None, @@ -215,6 +221,14 @@ impl ObjectInfo { } else { self.damage.replace(damage); } + let parent_slot = item.get_parent_slot(); + if let Some(parent_slot) = parent_slot { + self.parent_slot = Some((parent_slot.parent, parent_slot.slot as u32)); + } + let root_parent_human = item.root_parent_human(); + if let Some(root_parent_human) = root_parent_human { + self.root_parent_human = Some(root_parent_human.get_id()); + } self } diff --git a/ic10emu/src/vm/object/traits.rs b/ic10emu/src/vm/object/traits.rs index c1172e0..ed7e003 100644 --- a/ic10emu/src/vm/object/traits.rs +++ b/ic10emu/src/vm/object/traits.rs @@ -190,7 +190,7 @@ tag_object_traits! { /// 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); + fn halt_and_catch_fire(&mut self); } pub trait Item { @@ -403,7 +403,7 @@ tag_object_traits! { pub trait ReagentInterface: Device { /// Reagents required by current recipe - fn get_current_recipie(&self) -> Vec<(i32, f64)>; + fn get_current_recipe(&self) -> Vec<(i32, f64)>; /// Reagents required to complete current recipe fn get_current_required(&self) -> Vec<(i32, f64)>; } @@ -465,8 +465,8 @@ tag_object_traits! { fn set_mood(&mut self, mood: f32); fn mood_state(&self) -> StatState; fn get_hygiene(&self) -> f32; - fn set_hygiene(&mut self, hygine: f32); - fn hygine_state(&self) -> StatState; + fn set_hygiene(&mut self, hygiene: f32); + fn hygiene_state(&self) -> StatState; fn is_artificial(&self) -> bool; fn robot_battery(&self) -> Option; fn suit_slot(&self) -> &Slot; diff --git a/ic10emu_wasm/Cargo.toml b/ic10emu_wasm/Cargo.toml index 8f08cae..e21606b 100644 --- a/ic10emu_wasm/Cargo.toml +++ b/ic10emu_wasm/Cargo.toml @@ -22,16 +22,11 @@ color-eyre = "0.6.3" itertools = "0.13.0" serde = { version = "1.0.202", features = ["derive"] } serde_with = "3.8.1" -tsify = { version = "0.4.5", features = ["json"] } +tsify = { version = "0.4.5", features = ["js"] } thiserror = "1.0.61" serde_derive = "1.0.203" serde_json = "1.0.117" -[build-dependencies] -ic10emu = { path = "../ic10emu" } -strum = { version = "0.26.2" } -itertools = "0.13.0" - [features] default = ["console_error_panic_hook"] console_error_panic_hook = ["dep:console_error_panic_hook"] diff --git a/ic10emu_wasm/build.rs b/ic10emu_wasm/build.rs deleted file mode 100644 index ab4a158..0000000 --- a/ic10emu_wasm/build.rs +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -fn main() { - // let out_dir = env::var_os("OUT_DIR").unwrap(); - // let dest_path = Path::new(&out_dir).join("ts_types.rs"); - // let output_file = File::create(dest_path).unwrap(); - // let mut writer = BufWriter::new(&output_file); - // - // let mut ts_types: String = String::new(); - // - // let lt_tsunion: String = Itertools::intersperse( - // ic10emu::grammar::generated::LogicType::iter().map(|lt| format!("\"{}\"", lt.as_ref())), - // "\n | ".to_owned(), - // ) - // .collect(); - // let lt_tstype = format!("\nexport type LogicType = {};", lt_tsunion); - // ts_types.push_str(<_tstype); - // - // let slt_tsunion: String = Itertools::intersperse( - // ic10emu::grammar::generated::LogicSlotType::iter() - // .map(|slt| format!("\"{}\"", slt.as_ref())), - // "\n | ".to_owned(), - // ) - // .collect(); - // let slt_tstype = format!("\nexport type LogicSlotType = {};", slt_tsunion); - // ts_types.push_str(&slt_tstype); - // - // let bm_tsunion: String = Itertools::intersperse( - // ic10emu::grammar::generated::BatchMode::iter().map(|bm| format!("\"{}\"", bm.as_ref())), - // "\n | ".to_owned(), - // ) - // .collect(); - // let bm_tstype = format!("\nexport type BatchMode = {};", bm_tsunion); - // ts_types.push_str(&bm_tstype); - // - // let rm_tsunion: String = Itertools::intersperse( - // ic10emu::grammar::generated::ReagentMode::iter().map(|rm| format!("\"{}\"", rm.as_ref())), - // "\n | ".to_owned(), - // ) - // .collect(); - // let rm_tstype = format!("\nexport type ReagentMode = {};", rm_tsunion); - // ts_types.push_str(&rm_tstype); - // - // let sc_tsunion: String = Itertools::intersperse( - // ic10emu::device::SortingClass::iter().map(|rm| format!("\"{}\"", rm.as_ref())), - // "\n | ".to_owned(), - // ) - // .collect(); - // let sc_tstype = format!("\nexport type SortingClass = {};", sc_tsunion); - // ts_types.push_str(&sc_tstype); - // - // let st_tsunion: String = Itertools::intersperse( - // ic10emu::device::SlotType::iter().map(|rm| format!("\"{}\"", rm.as_ref())), - // "\n | ".to_owned(), - // ) - // .collect(); - // let st_tstype = format!("\nexport type SlotType = {};", st_tsunion); - // ts_types.push_str(&st_tstype); - // - // let ct_tsunion: String = Itertools::intersperse( - // ic10emu::network::ConnectionType::iter().map(|rm| format!("\"{}\"", rm.as_ref())), - // "\n | ".to_owned(), - // ) - // .collect(); - // let ct_tstype = format!("\nexport type ConnectionType = {};", ct_tsunion); - // ts_types.push_str(&ct_tstype); - // - // let cr_tsunion: String = Itertools::intersperse( - // ic10emu::network::ConnectionRole::iter().map(|rm| format!("\"{}\"", rm.as_ref())), - // "\n | ".to_owned(), - // ) - // .collect(); - // let cr_tstype = format!("\nexport type ConnectionRole = {};", cr_tsunion); - // ts_types.push_str(&cr_tstype); - // - // let infile = Path::new("src/types.ts"); - // let contents = fs::read_to_string(infile).unwrap(); - // - // ts_types.push('\n'); - // ts_types.push_str(&contents); - // - // write!( - // &mut writer, - // "#[wasm_bindgen(typescript_custom_section)]\n\ - // const TYPES: &'static str = r#\"{ts_types}\"#; - // " - // ) - // .unwrap(); -} diff --git a/stationeers_data/src/database/prefab_map.rs b/stationeers_data/src/database/prefab_map.rs index 415ad50..67a6065 100644 --- a/stationeers_data/src/database/prefab_map.rs +++ b/stationeers_data/src/database/prefab_map.rs @@ -322,7 +322,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemCharcoal".into(), "ItemCobaltOre".into(), "ItemFern".into(), "ItemSilverIngot".into(), "ItemSilverOre".into(), "ItemSoyOil".into() ] @@ -404,7 +404,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemCorn".into(), "ItemEgg".into(), "ItemFertilizedEgg".into(), "ItemFlour".into(), "ItemMilk".into(), "ItemMushroom".into(), "ItemPotato".into(), "ItemPumpkin".into(), "ItemRice".into(), @@ -444,7 +444,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemCookedCondensedMilk".into(), "ItemCookedCorn".into(), "ItemCookedMushroom".into(), "ItemCookedPowderedEggs".into(), "ItemCookedPumpkin".into(), "ItemCookedRice".into(), @@ -483,7 +483,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemSoyOil".into(), "ReagentColorBlue".into(), "ReagentColorGreen" .into(), "ReagentColorOrange".into(), "ReagentColorRed".into(), "ReagentColorYellow".into() @@ -607,7 +607,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemWheat".into(), "ItemSugarCane".into(), "ItemCocoaTree".into(), "ItemSoybean".into(), "ItemFlowerBlue".into(), "ItemFlowerGreen" .into(), "ItemFlowerOrange".into(), "ItemFlowerRed".into(), @@ -739,9 +739,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -785,9 +786,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -863,7 +865,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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(), + name: "Cartridge (Atmos Analyzer)".into(), }, item: ItemInfo { consumable: false, @@ -886,7 +888,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "CartridgeConfiguration".into(), prefab_hash: -932136011i32, desc: "".into(), - name: "Configuration".into(), + name: "Cartridge (Configuration)".into(), }, item: ItemInfo { consumable: false, @@ -909,7 +911,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "CartridgeElectronicReader".into(), prefab_hash: -1462180176i32, desc: "".into(), - name: "eReader".into(), + name: "Cartridge (eReader)".into(), }, item: ItemInfo { consumable: false, @@ -932,7 +934,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "CartridgeGPS".into(), prefab_hash: -1957063345i32, desc: "".into(), - name: "GPS".into(), + name: "Cartridge (GPS)".into(), }, item: ItemInfo { consumable: false, @@ -955,7 +957,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "CartridgeGuide".into(), prefab_hash: 872720793i32, desc: "".into(), - name: "Guide".into(), + name: "Cartridge (Guide)".into(), }, item: ItemInfo { consumable: false, @@ -979,7 +981,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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(), + name: "Cartridge (Medical Analyzer)".into(), }, item: ItemInfo { consumable: false, @@ -1003,7 +1005,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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(), + name: "Cartridge (Network Analyzer)".into(), }, item: ItemInfo { consumable: false, @@ -1027,7 +1029,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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(), + name: "Cartridge (Ore Scanner)".into(), }, item: ItemInfo { consumable: false, @@ -1051,7 +1053,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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(), + name: "Cartridge (Ore Scanner Color)".into(), }, item: ItemInfo { consumable: false, @@ -1074,7 +1076,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "CartridgePlantAnalyser".into(), prefab_hash: 1101328282i32, desc: "".into(), - name: "Cartridge Plant Analyser".into(), + name: "Cartridge (Plant Analyser)".into(), }, item: ItemInfo { consumable: false, @@ -1097,7 +1099,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "CartridgeTracker".into(), prefab_hash: 81488783i32, desc: "".into(), - name: "Tracker".into(), + name: "Cartridge (Tracker)".into(), }, item: ItemInfo { consumable: false, @@ -1423,7 +1425,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -1463,7 +1465,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Crate, sorting_class: SortingClass::Storage, }, thermal_info: None, @@ -1536,9 +1538,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Whole Note".into()), (1u32, "Half Note".into()), (2u32, - "Quarter Note".into()), (3u32, "Eighth Note".into()), (4u32, - "Sixteenth Note".into()) + ("0".into(), "Whole Note".into()), ("1".into(), "Half Note" + .into()), ("2".into(), "Quarter Note".into()), ("3".into(), + "Eighth Note".into()), ("4".into(), "Sixteenth Note".into()) ] .into_iter() .collect(), @@ -1597,54 +1599,68 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "C-2".into()), ("1".into(), "C#-2".into()), ("2" + .into(), "D-2".into()), ("3".into(), "D#-2".into()), ("4".into(), + "E-2".into()), ("5".into(), "F-2".into()), ("6".into(), "F#-2" + .into()), ("7".into(), "G-2".into()), ("8".into(), "G#-2" + .into()), ("9".into(), "A-2".into()), ("10".into(), "A#-2" + .into()), ("11".into(), "B-2".into()), ("12".into(), "C-1" + .into()), ("13".into(), "C#-1".into()), ("14".into(), "D-1" + .into()), ("15".into(), "D#-1".into()), ("16".into(), "E-1" + .into()), ("17".into(), "F-1".into()), ("18".into(), "F#-1" + .into()), ("19".into(), "G-1".into()), ("20".into(), "G#-1" + .into()), ("21".into(), "A-1".into()), ("22".into(), "A#-1" + .into()), ("23".into(), "B-1".into()), ("24".into(), "C0" + .into()), ("25".into(), "C#0".into()), ("26".into(), "D0" + .into()), ("27".into(), "D#0".into()), ("28".into(), "E0" + .into()), ("29".into(), "F0".into()), ("30".into(), "F#0" + .into()), ("31".into(), "G0".into()), ("32".into(), "G#0" + .into()), ("33".into(), "A0".into()), ("34".into(), "A#0" + .into()), ("35".into(), "B0".into()), ("36".into(), "C1".into()), + ("37".into(), "C#1".into()), ("38".into(), "D1".into()), ("39" + .into(), "D#1".into()), ("40".into(), "E1".into()), ("41".into(), + "F1".into()), ("42".into(), "F#1".into()), ("43".into(), "G1" + .into()), ("44".into(), "G#1".into()), ("45".into(), "A1" + .into()), ("46".into(), "A#1".into()), ("47".into(), "B1" + .into()), ("48".into(), "C2".into()), ("49".into(), "C#2" + .into()), ("50".into(), "D2".into()), ("51".into(), "D#2" + .into()), ("52".into(), "E2".into()), ("53".into(), "F2".into()), + ("54".into(), "F#2".into()), ("55".into(), "G2".into()), ("56" + .into(), "G#2".into()), ("57".into(), "A2".into()), ("58".into(), + "A#2".into()), ("59".into(), "B2".into()), ("60".into(), "C3" + .into()), ("61".into(), "C#3".into()), ("62".into(), "D3" + .into()), ("63".into(), "D#3".into()), ("64".into(), "E3" + .into()), ("65".into(), "F3".into()), ("66".into(), "F#3" + .into()), ("67".into(), "G3".into()), ("68".into(), "G#3" + .into()), ("69".into(), "A3".into()), ("70".into(), "A#3" + .into()), ("71".into(), "B3".into()), ("72".into(), "C4".into()), + ("73".into(), "C#4".into()), ("74".into(), "D4".into()), ("75" + .into(), "D#4".into()), ("76".into(), "E4".into()), ("77".into(), + "F4".into()), ("78".into(), "F#4".into()), ("79".into(), "G4" + .into()), ("80".into(), "G#4".into()), ("81".into(), "A4" + .into()), ("82".into(), "A#4".into()), ("83".into(), "B4" + .into()), ("84".into(), "C5".into()), ("85".into(), "C#5" + .into()), ("86".into(), "D5".into()), ("87".into(), "D#5" + .into()), ("88".into(), "E5".into()), ("89".into(), "F5".into()), + ("90".into(), "F#5".into()), ("91".into(), "G5 ".into()), ("92" + .into(), "G#5".into()), ("93".into(), "A5".into()), ("94".into(), + "A#5".into()), ("95".into(), "B5".into()), ("96".into(), "C6" + .into()), ("97".into(), "C#6".into()), ("98".into(), "D6" + .into()), ("99".into(), "D#6".into()), ("100".into(), "E6" + .into()), ("101".into(), "F6".into()), ("102".into(), "F#6" + .into()), ("103".into(), "G6".into()), ("104".into(), "G#6" + .into()), ("105".into(), "A6".into()), ("106".into(), "A#6" + .into()), ("107".into(), "B6".into()), ("108".into(), "C7" + .into()), ("109".into(), "C#7".into()), ("110".into(), "D7" + .into()), ("111".into(), "D#7".into()), ("112".into(), "E7" + .into()), ("113".into(), "F7".into()), ("114".into(), "F#7" + .into()), ("115".into(), "G7".into()), ("116".into(), "G#7" + .into()), ("117".into(), "A7".into()), ("118".into(), "A#7" + .into()), ("119".into(), "B7".into()), ("120".into(), "C8" + .into()), ("121".into(), "C#8".into()), ("122".into(), "D8" + .into()), ("123".into(), "D#8".into()), ("124".into(), "E8" + .into()), ("125".into(), "F8".into()), ("126".into(), "F#8" + .into()), ("127".into(), "G8".into()) ] .into_iter() .collect(), @@ -1699,7 +1715,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< radiation_factor: 0f32, }), internal_atmo_info: None, - slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo { + name : "Liquid Canister".into(), typ : Class::LiquidCanister } + ] .into_iter() .collect(), } @@ -1721,7 +1740,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Crate, sorting_class: SortingClass::Storage, }, thermal_info: None, @@ -1763,7 +1782,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -1809,7 +1828,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Atmospherics, }, thermal_info: Some(ThermalInfo { @@ -1829,7 +1848,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + 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(), }, @@ -1839,7 +1858,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -1869,7 +1888,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -1899,7 +1918,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -1929,7 +1948,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -1958,7 +1977,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -1988,7 +2007,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -2017,7 +2036,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -2046,7 +2065,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -2076,7 +2095,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -2106,7 +2125,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Atmospherics, }, thermal_info: Some(ThermalInfo { @@ -2137,7 +2156,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Default, }, thermal_info: Some(ThermalInfo { @@ -2166,7 +2185,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Atmospherics, }, thermal_info: Some(ThermalInfo { @@ -2275,7 +2294,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -2322,7 +2341,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Atmospherics, }, thermal_info: Some(ThermalInfo { @@ -2354,7 +2373,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Atmospherics, }, thermal_info: Some(ThermalInfo { @@ -2386,7 +2405,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ingredient: false, max_quantity: 1u32, reagents: None, - slot_class: Class::None, + slot_class: Class::Portables, sorting_class: SortingClass::Atmospherics, }, thermal_info: Some(ThermalInfo { @@ -2811,7 +2830,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -2884,7 +2903,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] + vec![("0".into(), "Idle".into()), ("1".into(), "Active".into())] .into_iter() .collect(), ), @@ -3069,7 +3088,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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" + desc: "The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Cartridge (Atmos Analyzer), Cartridge (Tracker), Cartridge (Medical Analyzer), Cartridge (Ore Scanner), Cartridge (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(), }, @@ -3086,7 +3105,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -3094,20 +3113,20 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -3129,7 +3148,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -3216,7 +3235,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -3268,7 +3287,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -3306,7 +3325,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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(), + name: "Kit (Area Power Controller)".into(), }, item: ItemInfo { consumable: false, @@ -3469,9 +3488,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -3515,9 +3535,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -3561,9 +3582,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -3645,7 +3667,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -3775,7 +3797,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + desc: "Use heavy cable coil for power systems with large draws. Unlike Cable Coil, which can only safely conduct 5kW, heavy cables can transmit up to 100kW." .into(), name: "Cable Coil (Heavy)".into(), }, @@ -3960,6 +3982,70 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + -75205276i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCerealBarBag".into(), + prefab_hash: -75205276i32, + desc: "".into(), + name: "Cereal Bar Bag".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( + -401648353i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCerealBarBox".into(), + prefab_hash: -401648353i32, + desc: "".into(), + name: "Cereal Bar 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( 252561409i32, ItemTemplate { @@ -4464,7 +4550,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< filter_type: None, ingredient: true, max_quantity: 10u32, - reagents: Some(vec![("Soy".into(), 5f64)].into_iter().collect()), + reagents: Some(vec![("Soy".into(), 1f64)].into_iter().collect()), slot_class: Class::None, sorting_class: SortingClass::Food, }, @@ -4780,7 +4866,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -4980,7 +5066,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -5032,7 +5118,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -5107,7 +5193,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -5171,7 +5257,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), suit_info: SuitInfo { - hygine_reduction_multiplier: 1f32, + hygiene_reduction_multiplier: 1f32, waste_max_pressure: 4053f32, }, } @@ -5286,6 +5372,38 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + 851103794i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencySuppliesBox".into(), + prefab_hash: 851103794i32, + desc: "".into(), + name: "Emergency Supplies".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 } + ] + .into_iter() + .collect(), + } + .into(), + ); map.insert( 1661941301i32, ItemSlotsTemplate { @@ -5424,7 +5542,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), suit_info: SuitInfo { - hygine_reduction_multiplier: 1f32, + hygiene_reduction_multiplier: 1f32, waste_max_pressure: 4053f32, }, } @@ -5437,16 +5555,16 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemExplosive".into(), prefab_hash: 235361649i32, desc: "".into(), - name: "Remote Explosive".into(), + name: "Demolition Charge".into(), }, item: ItemInfo { consumable: false, filter_type: None, ingredient: false, - max_quantity: 1u32, + max_quantity: 3u32, reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, }, thermal_info: None, internal_atmo_info: None, @@ -5593,7 +5711,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -5613,7 +5731,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Low Power".into()), (1u32, "High Power".into())] + vec![ + ("0".into(), "Low Power".into()), ("1".into(), "High Power" + .into()) + ] .into_iter() .collect(), ), @@ -6943,83 +7064,83 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("11".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -7077,7 +7198,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -7086,97 +7207,97 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("11".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("12".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("13".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("14".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -7291,7 +7412,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }), logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -7300,7 +7421,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -7309,7 +7430,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -7317,13 +7438,13 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -7331,21 +7452,21 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::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, + .collect()), ("6".into(), vec![(LogicSlotType::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, + .collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -7421,7 +7542,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), suit_info: SuitInfo { - hygine_reduction_multiplier: 1.5f32, + hygiene_reduction_multiplier: 1.5f32, waste_max_pressure: 4053f32, }, memory: MemoryInfo { @@ -7698,6 +7819,32 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + 1485675617i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemInsulatedCanisterPackage".into(), + prefab_hash: 1485675617i32, + desc: "".into(), + name: "Insulated Canister Package".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 }] + .into_iter() + .collect(), + } + .into(), + ); map.insert( 897176943i32, ItemTemplate { @@ -7904,7 +8051,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -7913,62 +8060,62 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -9823,6 +9970,29 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + -441759975i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLinearRail".into(), + prefab_hash: -441759975i32, + desc: "".into(), + name: "Kit (Linear Rail)".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( 1951126161i32, ItemTemplate { @@ -10681,7 +10851,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemKitReinforcedWindows".into(), prefab_hash: 1459985302i32, desc: "".into(), - name: "Kit (Reinforced Windows)".into(), + name: "Kit (Reinforced Walls)".into(), }, item: ItemInfo { consumable: false, @@ -10743,6 +10913,52 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + -753675589i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRobotArmDoor".into(), + prefab_hash: -753675589i32, + desc: "".into(), + name: "Kit (Linear Rail Door)".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( + -1228287398i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRoboticArm".into(), + prefab_hash: -1228287398i32, + desc: "".into(), + name: "Kit (LArRE)".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( 1396305045i32, ItemTemplate { @@ -12061,7 +12277,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemKitWindowShutter".into(), prefab_hash: 1779979754i32, desc: "".into(), - name: "Kit (Window Shutter)".into(), + name: "Kit (Composite Window Shutter)".into(), }, item: ItemInfo { consumable: false, @@ -12100,7 +12316,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -12153,13 +12369,13 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -12168,7 +12384,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -12407,7 +12623,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "ItemLiquidPipeValve".into(), prefab_hash: -2126113312i32, - desc: "This kit creates a Liquid Valve." + desc: "This kit creates a Valve (Liquid)." .into(), name: "Kit (Liquid Pipe Valve)".into(), }, @@ -12495,7 +12711,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -12547,7 +12763,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -12624,7 +12840,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -12701,7 +12917,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -12723,7 +12939,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Default".into()), (1u32, "Flatten".into())] + vec![("0".into(), "Default".into()), ("1".into(), "Flatten".into())] .into_iter() .collect(), ), @@ -12993,104 +13209,104 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("11".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("12".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("13".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("14".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -13141,10 +13357,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< consumable: false, filter_type: None, ingredient: false, - max_quantity: 1u32, + max_quantity: 3u32, reagents: None, - slot_class: Class::None, - sorting_class: SortingClass::Default, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, }, thermal_info: None, internal_atmo_info: None, @@ -13174,7 +13390,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -13196,7 +13412,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Default".into()), (1u32, "Flatten".into())] + vec![("0".into(), "Default".into()), ("1".into(), "Flatten".into())] .into_iter() .collect(), ), @@ -13233,7 +13449,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -13255,7 +13471,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Default".into()), (1u32, "Flatten".into())] + vec![("0".into(), "Default".into()), ("1".into(), "Flatten".into())] .into_iter() .collect(), ), @@ -13297,6 +13513,38 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + 384478267i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningPackage".into(), + prefab_hash: 384478267i32, + desc: "".into(), + name: "Mining Supplies Package".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( 1467558064i32, ItemLogicTemplate { @@ -13320,83 +13568,83 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("11".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -13501,7 +13749,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -13632,9 +13880,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "ItemPassiveVent".into(), prefab_hash: 238631271i32, - desc: "This kit creates a Passive Vent among other variants." + desc: "This kit creates a Kit (Passive Vent) among other variants." .into(), - name: "Passive Vent".into(), + name: "Kit (Passive Vent)".into(), }, item: ItemInfo { consumable: false, @@ -14014,7 +14262,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "ItemPipeValve".into(), prefab_hash: 799323450i32, - desc: "This kit creates a Valve." + desc: "This kit creates a Valve (Gas)." .into(), name: "Kit (Pipe Valve)".into(), }, @@ -14173,7 +14421,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -14194,7 +14442,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -14325,6 +14573,38 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + 1459105919i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPortablesPackage".into(), + prefab_hash: 1459105919i32, + desc: "".into(), + name: "Portables Package".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( 1929046963i32, ItemTemplate { @@ -14953,7 +15233,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "ItemRemoteDetonator".into(), prefab_hash: 678483886i32, - desc: "".into(), + desc: "0.Mode0\n1.Mode1".into(), name: "Remote Detonator".into(), }, item: ItemInfo { @@ -14969,7 +15249,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -14982,13 +15262,19 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), logic_types: vec![ - (LogicType::Power, MemoryAccess::Read), (LogicType::Error, - MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (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::ReferenceId, MemoryAccess::Read) ] .into_iter() .collect(), - modes: None, + modes: Some( + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] + .into_iter() + .collect(), + ), transmission_receiver: false, wireless_logic: false, circuit_holder: false, @@ -14999,6 +15285,38 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + 509629504i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemResidentialPackage".into(), + prefab_hash: 509629504i32, + desc: "".into(), + name: "Residential Supplies Package".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( -1773192190i32, ItemSlotsTemplate { @@ -15357,7 +15675,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -15365,7 +15683,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -15905,7 +16223,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -15914,62 +16232,62 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -16516,7 +16834,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + 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 Cartridge (Atmos Analyzer) or Cartridge (Tracker), Cartridge (Medical Analyzer), Cartridge (Ore Scanner), Cartridge (eReader), and various other functions." .into(), name: "Handheld Tablet".into(), }, @@ -16533,7 +16851,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -16541,7 +16859,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -16594,7 +16912,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -16602,7 +16920,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -16622,7 +16940,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -16775,7 +17093,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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" + desc: "An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity\'s sake, these are often displayed as H2 by devices like the Cartridge (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(), }, @@ -16912,6 +17230,70 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + 1476318823i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterBottleBag".into(), + prefab_hash: 1476318823i32, + desc: "".into(), + name: "Water Bottle Bag".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( + -971586619i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterBottlePackage".into(), + prefab_hash: -971586619i32, + desc: "".into(), + name: "Water Bottle Package".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( 309693520i32, ItemTemplate { @@ -17003,7 +17385,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -17144,9 +17526,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -17166,7 +17549,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageAirConditioner1".into(), prefab_hash: -1826023284i32, desc: "".into(), - name: "Wreckage Air Conditioner".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17189,7 +17572,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageAirConditioner2".into(), prefab_hash: 169888054i32, desc: "".into(), - name: "Wreckage Air Conditioner".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17212,7 +17595,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageHydroponicsTray1".into(), prefab_hash: -310178617i32, desc: "".into(), - name: "Wreckage Hydroponics Tray".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17235,7 +17618,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageLargeExtendableRadiator01".into(), prefab_hash: -997763i32, desc: "".into(), - name: "Wreckage Large Extendable Radiator".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17258,7 +17641,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageStructureRTG1".into(), prefab_hash: 391453348i32, desc: "".into(), - name: "Wreckage Structure RTG".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17281,7 +17664,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageStructureWeatherStation001".into(), prefab_hash: -834664349i32, desc: "".into(), - name: "Wreckage Structure Weather Station".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17304,7 +17687,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageStructureWeatherStation002".into(), prefab_hash: 1464424921i32, desc: "".into(), - name: "Wreckage Structure Weather Station".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17327,7 +17710,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageStructureWeatherStation003".into(), prefab_hash: 542009679i32, desc: "".into(), - name: "Wreckage Structure Weather Station".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17350,7 +17733,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageStructureWeatherStation004".into(), prefab_hash: -1104478996i32, desc: "".into(), - name: "Wreckage Structure Weather Station".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17373,7 +17756,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageStructureWeatherStation005".into(), prefab_hash: -919745414i32, desc: "".into(), - name: "Wreckage Structure Weather Station".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17396,7 +17779,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageStructureWeatherStation006".into(), prefab_hash: 1344576960i32, desc: "".into(), - name: "Wreckage Structure Weather Station".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17419,7 +17802,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageStructureWeatherStation007".into(), prefab_hash: 656649558i32, desc: "".into(), - name: "Wreckage Structure Weather Station".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17442,7 +17825,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageStructureWeatherStation008".into(), prefab_hash: -1214467897i32, desc: "".into(), - name: "Wreckage Structure Weather Station".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17465,7 +17848,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageTurbineGenerator1".into(), prefab_hash: -1662394403i32, desc: "".into(), - name: "Wreckage Turbine Generator".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17488,7 +17871,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageTurbineGenerator2".into(), prefab_hash: 98602599i32, desc: "".into(), - name: "Wreckage Turbine Generator".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17511,7 +17894,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageTurbineGenerator3".into(), prefab_hash: 1927790321i32, desc: "".into(), - name: "Wreckage Turbine Generator".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17534,7 +17917,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageWallCooler1".into(), prefab_hash: -1682930158i32, desc: "".into(), - name: "Wreckage Wall Cooler".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17557,7 +17940,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "ItemWreckageWallCooler2".into(), prefab_hash: 45733800i32, desc: "".into(), - name: "Wreckage Wall Cooler".into(), + name: "Wreckage".into(), }, item: ItemInfo { consumable: false, @@ -17725,13 +18108,13 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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 } + SlotInfo { name : "".into(), typ : Class::Crate }, SlotInfo { name : "" + .into(), typ : Class::Crate }, SlotInfo { name : "".into(), typ : + Class::Crate }, SlotInfo { name : "".into(), typ : Class::Crate }, + SlotInfo { name : "".into(), typ : Class::Crate }, SlotInfo { name : "" + .into(), typ : Class::Crate }, SlotInfo { name : "".into(), typ : + Class::Portables }, SlotInfo { name : "".into(), typ : Class::Portables + }, SlotInfo { name : "".into(), typ : Class::Crate } ] .into_iter() .collect(), @@ -17796,9 +18179,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< logic_types: vec![].into_iter().collect(), modes: Some( vec![ - (0u32, "None".into()), (1u32, "NoContact".into()), (2u32, - "Moving".into()), (3u32, "Holding".into()), (4u32, "Landed" - .into()) + ("0".into(), "None".into()), ("1".into(), "NoContact".into()), + ("2".into(), "Moving".into()), ("3".into(), "Holding".into()), + ("4".into(), "Landed".into()) ] .into_iter() .collect(), @@ -17876,9 +18259,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "None".into()), (1u32, "NoContact".into()), (2u32, - "Moving".into()), (3u32, "Holding".into()), (4u32, "Landed" - .into()) + ("0".into(), "None".into()), ("1".into(), "NoContact".into()), + ("2".into(), "Moving".into()), ("3".into(), "Holding".into()), + ("4".into(), "Landed".into()) ] .into_iter() .collect(), @@ -18376,7 +18759,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -18402,9 +18785,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Whole Note".into()), (1u32, "Half Note".into()), (2u32, - "Quarter Note".into()), (3u32, "Eighth Note".into()), (4u32, - "Sixteenth Note".into()) + ("0".into(), "Whole Note".into()), ("1".into(), "Half Note" + .into()), ("2".into(), "Quarter Note".into()), ("3".into(), + "Eighth Note".into()), ("4".into(), "Sixteenth Note".into()) ] .into_iter() .collect(), @@ -18492,7 +18875,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + desc: "When placed in a Computer (Modern) 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(), }, @@ -18516,7 +18899,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + desc: "Motherboards are connected to Computer (Modern)s 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(), }, @@ -18563,7 +18946,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + desc: "When placed in a Computer (Modern), 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(), }, @@ -18610,7 +18993,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + desc: "Motherboards are connected to Computer (Modern)s 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(), }, @@ -18843,7 +19226,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -19090,7 +19473,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -19098,62 +19481,62 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -19190,10 +19573,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "None".into()), ("1".into(), "Follow".into()), ("2" + .into(), "MoveToTarget".into()), ("3".into(), "Roam".into()), + ("4".into(), "Unload".into()), ("5".into(), "PathToTarget" + .into()), ("6".into(), "StorageFull".into()) ] .into_iter() .collect(), @@ -19243,20 +19626,20 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -19264,21 +19647,21 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::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, + .collect()), ("4".into(), vec![(LogicSlotType::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, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -19287,7 +19670,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, + .collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -19296,7 +19679,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, + .collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -19305,7 +19688,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, + .collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -19314,7 +19697,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, + .collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -19322,7 +19705,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, + .collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -19330,7 +19713,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, + .collect()), ("11".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -19338,27 +19721,27 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, + .collect()), ("12".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("13".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("14".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("15".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -19449,20 +19832,20 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -19471,7 +19854,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -19479,7 +19862,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -19487,41 +19870,41 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read), (LogicSlotType::MaxQuantity, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::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, + MemoryAccess::Read)] .into_iter().collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -20044,7 +20427,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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 ..." + 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(), }, @@ -20053,7 +20436,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -20081,7 +20464,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Outward".into()), (1u32, "Inward".into())] + vec![("0".into(), "Outward".into()), ("1".into(), "Inward".into())] .into_iter() .collect(), ), @@ -20128,8 +20511,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -20151,7 +20534,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -20209,8 +20592,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -20255,7 +20638,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -20312,8 +20695,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -20366,7 +20749,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_reagents: true, }, consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemCookedCondensedMilk".into(), "ItemCookedCorn".into(), "ItemCookedMushroom".into(), "ItemCookedPowderedEggs".into(), "ItemCookedPumpkin".into(), "ItemCookedRice".into(), @@ -20402,7 +20785,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid : 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" + count_types : 3i64, reagents : vec![("Mushroom".into(), 5f64), ("Oil" .into(), 1f64), ("Steel".into(), 1f64)] .into_iter().collect() }), ("ItemCannedPowderedEggs".into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : @@ -20441,7 +20824,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 0f64, stop : 1000000f64, is_valid : 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), + reagents : vec![("Oil".into(), 1f64), ("Pumpkin".into(), 2f64), ("Steel".into(), 1f64)] .into_iter().collect() }), ("ItemTomatoSoup" .into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, @@ -20834,7 +21217,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -20909,7 +21292,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] + vec![("0".into(), "Idle".into()), ("1".into(), "Active".into())] .into_iter() .collect(), ), @@ -20976,7 +21359,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -21033,7 +21416,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -21077,7 +21460,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -21133,7 +21516,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -21141,7 +21524,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -21218,7 +21601,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -21228,7 +21611,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -21257,9 +21640,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32, - "Discharging".into()), (3u32, "Charging".into()), (4u32, - "Charged".into()) + ("0".into(), "Idle".into()), ("1".into(), "Discharged".into()), + ("2".into(), "Discharging".into()), ("3".into(), "Charging" + .into()), ("4".into(), "Charged".into()) ] .into_iter() .collect(), @@ -21310,7 +21693,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -21320,7 +21703,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -21349,9 +21732,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32, - "Discharging".into()), (3u32, "Charging".into()), (4u32, - "Charged".into()) + ("0".into(), "Idle".into()), ("1".into(), "Discharged".into()), + ("2".into(), "Discharging".into()), ("3".into(), "Charging" + .into()), ("4".into(), "Charged".into()) ] .into_iter() .collect(), @@ -21402,8 +21785,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -21470,8 +21853,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -21524,7 +21907,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_reagents: true, }, consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), @@ -21548,6 +21931,13 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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() }), + ("ItemAstroloySheets".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![("Astroloy".into(), 3f64)] .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 : @@ -21803,7 +22193,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< pressure : RecipeRange { start : 0f64, stop : 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)] + count_types : 1i64, reagents : vec![("Astroloy".into(), 2f64)] .into_iter().collect() }), ("ItemKitRespawnPointWallMounted".into(), Recipe { tier : MachineTier::TierOne, time : 20f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : @@ -21812,6 +22202,14 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< : 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() }), + ("ItemKitRobotArmDoor".into(), Recipe { tier : MachineTier::TierTwo, + time : 10f64, 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(), 5f64), ("Gold".into(), 3f64), + ("Steel".into(), 12f64)] .into_iter().collect() }), ("ItemKitRocketManufactory".into(), Recipe { tier : MachineTier::TierOne, time : 120f64, energy : 12000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, @@ -21942,7 +22340,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< false }, pressure : RecipeRange { start : 0f64, stop : 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(), + .collect() }, count_types : 2i64, reagents : vec![("Solder".into(), 1f64), ("Steel".into(), 2f64)] .into_iter().collect() }), ("ItemPlasticSheets".into(), Recipe { tier : MachineTier::TierOne, time : 1f64, energy : 200f64, temperature : RecipeRange { start : @@ -22385,8 +22783,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -22439,7 +22837,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_reagents: true, }, consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemCorn".into(), "ItemEgg".into(), "ItemFertilizedEgg".into(), "ItemFlour".into(), "ItemMilk".into(), "ItemMushroom".into(), "ItemPotato".into(), "ItemPumpkin".into(), "ItemRice".into(), @@ -22533,14 +22931,14 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< pressure : RecipeRange { start : 0f64, stop : 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)] + count_types : 1i64, reagents : vec![("Rice".into(), 1f64)] .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)] + count_types : 1i64, reagents : vec![("Soy".into(), 1f64)] .into_iter().collect() }), ("ItemCookedTomato".into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, @@ -23145,9 +23543,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -23194,7 +23593,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -23204,7 +23603,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -23214,7 +23613,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -23224,7 +23623,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -23234,7 +23633,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -23307,7 +23706,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -23317,7 +23716,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -23402,9 +23801,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -23465,9 +23865,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -23529,9 +23930,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Empty".into()), ("1".into(), "Critical".into()), + ("2".into(), "VeryLow".into()), ("3".into(), "Low".into()), ("4" + .into(), "Medium".into()), ("5".into(), "High".into()), ("6" + .into(), "Full".into()) ] .into_iter() .collect(), @@ -23630,7 +24032,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -23639,7 +24041,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::On, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -23707,7 +24109,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -23716,7 +24118,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::On, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -23784,7 +24186,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -23793,7 +24195,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::On, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -23861,7 +24263,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -23870,7 +24272,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::On, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -23938,7 +24340,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -23947,7 +24349,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::On, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -24029,7 +24431,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -24065,7 +24467,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "StructureBlockBed".into(), prefab_hash: 697908419i32, - desc: "Description coming.".into(), + desc: "".into(), name: "Block Bed".into(), }, structure: StructureInfo { small_grid: true }, @@ -24073,7 +24475,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -24861,7 +25263,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -25052,68 +25454,82 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()), ("2".into(), vec![] .into_iter().collect()), + ("3".into(), vec![] .into_iter().collect()), ("4".into(), vec![] + .into_iter().collect()), ("5".into(), vec![] .into_iter().collect()), + ("6".into(), vec![] .into_iter().collect()), ("7".into(), vec![] + .into_iter().collect()), ("8".into(), vec![] .into_iter().collect()), + ("9".into(), vec![] .into_iter().collect()), ("10".into(), vec![] + .into_iter().collect()), ("11".into(), vec![] .into_iter() + .collect()), ("12".into(), vec![] .into_iter().collect()), ("13" + .into(), vec![] .into_iter().collect()), ("14".into(), vec![] + .into_iter().collect()), ("15".into(), vec![] .into_iter() + .collect()), ("16".into(), vec![] .into_iter().collect()), ("17" + .into(), vec![] .into_iter().collect()), ("18".into(), vec![] + .into_iter().collect()), ("19".into(), vec![] .into_iter() + .collect()), ("20".into(), vec![] .into_iter().collect()), ("21" + .into(), vec![] .into_iter().collect()), ("22".into(), vec![] + .into_iter().collect()), ("23".into(), vec![] .into_iter() + .collect()), ("24".into(), vec![] .into_iter().collect()), ("25" + .into(), vec![] .into_iter().collect()), ("26".into(), vec![] + .into_iter().collect()), ("27".into(), vec![] .into_iter() + .collect()), ("28".into(), vec![] .into_iter().collect()), ("29" + .into(), vec![] .into_iter().collect()), ("30".into(), vec![] + .into_iter().collect()), ("31".into(), vec![] .into_iter() + .collect()), ("32".into(), vec![] .into_iter().collect()), ("33" + .into(), vec![] .into_iter().collect()), ("34".into(), vec![] + .into_iter().collect()), ("35".into(), vec![] .into_iter() + .collect()), ("36".into(), vec![] .into_iter().collect()), ("37" + .into(), vec![] .into_iter().collect()), ("38".into(), vec![] + .into_iter().collect()), ("39".into(), vec![] .into_iter() + .collect()), ("40".into(), vec![] .into_iter().collect()), ("41" + .into(), vec![] .into_iter().collect()), ("42".into(), vec![] + .into_iter().collect()), ("43".into(), vec![] .into_iter() + .collect()), ("44".into(), vec![] .into_iter().collect()), ("45" + .into(), vec![] .into_iter().collect()), ("46".into(), vec![] + .into_iter().collect()), ("47".into(), vec![] .into_iter() + .collect()), ("48".into(), vec![] .into_iter().collect()), ("49" + .into(), vec![] .into_iter().collect()), ("50".into(), vec![] + .into_iter().collect()), ("51".into(), vec![] .into_iter() + .collect()), ("52".into(), vec![] .into_iter().collect()), ("53" + .into(), vec![] .into_iter().collect()), ("54".into(), vec![] + .into_iter().collect()), ("55".into(), vec![] .into_iter() + .collect()), ("56".into(), vec![] .into_iter().collect()), ("57" + .into(), vec![] .into_iter().collect()), ("58".into(), vec![] + .into_iter().collect()), ("59".into(), vec![] .into_iter() + .collect()), ("60".into(), vec![] .into_iter().collect()), ("61" + .into(), vec![] .into_iter().collect()), ("62".into(), vec![] + .into_iter().collect()), ("63".into(), vec![] .into_iter() + .collect()), ("64".into(), vec![] .into_iter().collect()), ("65" + .into(), vec![] .into_iter().collect()), ("66".into(), vec![] + .into_iter().collect()), ("67".into(), vec![] .into_iter() + .collect()), ("68".into(), vec![] .into_iter().collect()), ("69" + .into(), vec![] .into_iter().collect()), ("70".into(), vec![] + .into_iter().collect()), ("71".into(), vec![] .into_iter() + .collect()), ("72".into(), vec![] .into_iter().collect()), ("73" + .into(), vec![] .into_iter().collect()), ("74".into(), vec![] + .into_iter().collect()), ("75".into(), vec![] .into_iter() + .collect()), ("76".into(), vec![] .into_iter().collect()), ("77" + .into(), vec![] .into_iter().collect()), ("78".into(), vec![] + .into_iter().collect()), ("79".into(), vec![] .into_iter() + .collect()), ("80".into(), vec![] .into_iter().collect()), ("81" + .into(), vec![] .into_iter().collect()), ("82".into(), vec![] + .into_iter().collect()), ("83".into(), vec![] .into_iter() + .collect()), ("84".into(), vec![] .into_iter().collect()), ("85" + .into(), vec![] .into_iter().collect()), ("86".into(), vec![] + .into_iter().collect()), ("87".into(), vec![] .into_iter() + .collect()), ("88".into(), vec![] .into_iter().collect()), ("89" + .into(), vec![] .into_iter().collect()), ("90".into(), vec![] + .into_iter().collect()), ("91".into(), vec![] .into_iter() + .collect()), ("92".into(), vec![] .into_iter().collect()), ("93" + .into(), vec![] .into_iter().collect()), ("94".into(), vec![] + .into_iter().collect()), ("95".into(), vec![] .into_iter() + .collect()), ("96".into(), vec![] .into_iter().collect()), ("97" + .into(), vec![] .into_iter().collect()), ("98".into(), vec![] + .into_iter().collect()), ("99".into(), vec![] .into_iter() + .collect()), ("100".into(), vec![] .into_iter().collect()), ("101" + .into(), vec![] .into_iter().collect()) ] .into_iter() .collect(), @@ -25258,7 +25674,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25266,7 +25682,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25274,7 +25690,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25282,7 +25698,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25290,7 +25706,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25298,7 +25714,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25306,7 +25722,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, + .collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25314,7 +25730,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, + .collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25322,7 +25738,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, + .collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25330,7 +25746,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, + .collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25338,7 +25754,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, + .collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25346,7 +25762,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, + .collect()), ("11".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25354,7 +25770,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, + .collect()), ("12".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25362,7 +25778,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, + .collect()), ("13".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25370,7 +25786,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, + .collect()), ("14".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25378,7 +25794,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (15u32, vec![(LogicSlotType::Occupied, + .collect()), ("15".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25386,7 +25802,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (16u32, vec![(LogicSlotType::Occupied, + .collect()), ("16".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25394,7 +25810,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (17u32, vec![(LogicSlotType::Occupied, + .collect()), ("17".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25402,7 +25818,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (18u32, vec![(LogicSlotType::Occupied, + .collect()), ("18".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25410,7 +25826,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (19u32, vec![(LogicSlotType::Occupied, + .collect()), ("19".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25418,7 +25834,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (20u32, vec![(LogicSlotType::Occupied, + .collect()), ("20".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25426,7 +25842,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (21u32, vec![(LogicSlotType::Occupied, + .collect()), ("21".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25434,7 +25850,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (22u32, vec![(LogicSlotType::Occupied, + .collect()), ("22".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25442,7 +25858,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (23u32, vec![(LogicSlotType::Occupied, + .collect()), ("23".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25450,7 +25866,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (24u32, vec![(LogicSlotType::Occupied, + .collect()), ("24".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25458,7 +25874,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (25u32, vec![(LogicSlotType::Occupied, + .collect()), ("25".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25466,7 +25882,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (26u32, vec![(LogicSlotType::Occupied, + .collect()), ("26".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25474,7 +25890,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (27u32, vec![(LogicSlotType::Occupied, + .collect()), ("27".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25482,7 +25898,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (28u32, vec![(LogicSlotType::Occupied, + .collect()), ("28".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25490,7 +25906,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (29u32, vec![(LogicSlotType::Occupied, + .collect()), ("29".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25498,7 +25914,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (30u32, vec![(LogicSlotType::Occupied, + .collect()), ("30".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25506,7 +25922,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (31u32, vec![(LogicSlotType::Occupied, + .collect()), ("31".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25514,7 +25930,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (32u32, vec![(LogicSlotType::Occupied, + .collect()), ("32".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25522,7 +25938,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (33u32, vec![(LogicSlotType::Occupied, + .collect()), ("33".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25530,7 +25946,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (34u32, vec![(LogicSlotType::Occupied, + .collect()), ("34".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25538,7 +25954,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (35u32, vec![(LogicSlotType::Occupied, + .collect()), ("35".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25546,7 +25962,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (36u32, vec![(LogicSlotType::Occupied, + .collect()), ("36".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25554,7 +25970,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (37u32, vec![(LogicSlotType::Occupied, + .collect()), ("37".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25562,7 +25978,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (38u32, vec![(LogicSlotType::Occupied, + .collect()), ("38".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25570,7 +25986,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (39u32, vec![(LogicSlotType::Occupied, + .collect()), ("39".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25578,7 +25994,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (40u32, vec![(LogicSlotType::Occupied, + .collect()), ("40".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25586,7 +26002,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (41u32, vec![(LogicSlotType::Occupied, + .collect()), ("41".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25594,7 +26010,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (42u32, vec![(LogicSlotType::Occupied, + .collect()), ("42".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25602,7 +26018,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (43u32, vec![(LogicSlotType::Occupied, + .collect()), ("43".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25610,7 +26026,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (44u32, vec![(LogicSlotType::Occupied, + .collect()), ("44".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25618,7 +26034,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (45u32, vec![(LogicSlotType::Occupied, + .collect()), ("45".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25626,7 +26042,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (46u32, vec![(LogicSlotType::Occupied, + .collect()), ("46".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25634,7 +26050,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (47u32, vec![(LogicSlotType::Occupied, + .collect()), ("47".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25642,7 +26058,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (48u32, vec![(LogicSlotType::Occupied, + .collect()), ("48".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25650,7 +26066,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (49u32, vec![(LogicSlotType::Occupied, + .collect()), ("49".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25658,7 +26074,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (50u32, vec![(LogicSlotType::Occupied, + .collect()), ("50".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25666,7 +26082,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (51u32, vec![(LogicSlotType::Occupied, + .collect()), ("51".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25780,8 +26196,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -25848,7 +26264,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25903,7 +26319,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -25958,7 +26374,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26013,7 +26429,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26068,7 +26484,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26123,7 +26539,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26178,7 +26594,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26233,7 +26649,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26288,7 +26704,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26337,14 +26753,14 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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(), + name: "Chute Import 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), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26430,7 +26846,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26456,7 +26872,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -26506,7 +26922,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26532,7 +26948,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -26582,7 +26998,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26651,7 +27067,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26705,6 +27121,72 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + 1957571043i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteExportBin".into(), + prefab_hash: 1957571043i32, + desc: "".into(), + name: "Chute Export Bin".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::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::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: true, + has_reagents: false, + }, + } + .into(), + ); map.insert( -1446854725i32, StructureSlotsTemplate { @@ -26738,7 +27220,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26821,7 +27303,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26923,7 +27405,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -26983,7 +27465,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -27043,7 +27525,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -27068,8 +27550,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right" - .into()) + ("0".into(), "Left".into()), ("1".into(), "Center".into()), ("2" + .into(), "Right".into()) ] .into_iter() .collect(), @@ -27154,7 +27636,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -27228,8 +27710,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()), ("2".into(), vec![] .into_iter().collect()) ] .into_iter() .collect(), @@ -27641,7 +28123,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -27854,23 +28336,169 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + 1580592998i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWindowShutter".into(), + prefab_hash: 1580592998i32, + desc: "".into(), + name: "Composite Window Shutter".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 791407452i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWindowShutterConnector".into(), + prefab_hash: 791407452i32, + desc: "".into(), + name: "Composite Window Shutter Connector".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -2078371660i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWindowShutterController".into(), + prefab_hash: -2078371660i32, + desc: "".into(), + name: "Composite Window Shutter Controller".into(), + }, + structure: 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::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: true, + has_reagents: false, + }, + } + .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" + desc: "This unit operates with a wide range of motherboards." .into(), - name: "Computer".into(), + name: "Computer (Modern)".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()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()), ("2".into(), 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( + -405593895i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureComputerUpright".into(), + prefab_hash: -405593895i32, + desc: "This unit operates with a wide range of motherboards." + .into(), + name: "Computer (Retro)".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()), ("2".into(), vec![] .into_iter().collect()) ] .into_iter() .collect(), @@ -28065,8 +28693,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -28127,8 +28755,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -28202,8 +28830,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, - "Power".into()) + ("0".into(), "Default".into()), ("1".into(), "Percent".into()), + ("2".into(), "Power".into()) ] .into_iter() .collect(), @@ -28260,8 +28888,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, - "Power".into()) + ("0".into(), "Default".into()), ("1".into(), "Percent".into()), + ("2".into(), "Power".into()) ] .into_iter() .collect(), @@ -28318,8 +28946,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, - "Power".into()) + ("0".into(), "Default".into()), ("1".into(), "Percent".into()), + ("2".into(), "Power".into()) ] .into_iter() .collect(), @@ -28364,8 +28992,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -28429,7 +29057,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -28479,7 +29107,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -28525,7 +29153,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -28533,7 +29161,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -28541,7 +29169,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -28549,7 +29177,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -28557,7 +29185,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -28565,7 +29193,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -28626,7 +29254,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< structure: StructureInfo { small_grid: true }, thermal_info: None, internal_atmo_info: None, - slots: vec![SlotInfo { name : "Container Slot".into(), typ : Class::None }] + slots: vec![SlotInfo { name : "Container Slot".into(), typ : Class::Crate }] .into_iter() .collect(), } @@ -28650,7 +29278,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -28725,7 +29353,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -28791,7 +29419,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -28869,8 +29497,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Default".into()), (1u32, "Horizontal".into()), (2u32, - "Vertical".into()) + ("0".into(), "Default".into()), ("1".into(), "Horizontal" + .into()), ("2".into(), "Vertical".into()) ] .into_iter() .collect(), @@ -28914,7 +29542,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< thermal_info: None, internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -29174,8 +29802,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "StructureDrinkingFountain".into(), prefab_hash: 1968371847i32, - desc: "".into(), - name: "".into(), + desc: "The Drinking Fountain can be interacted with directly to increase hydration. It needs a Water supply." + .into(), + name: "Drinking Fountain".into(), }, structure: StructureInfo { small_grid: true }, thermal_info: None, @@ -29235,7 +29864,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -29308,7 +29937,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] + vec![("0".into(), "Idle".into()), ("1".into(), "Active".into())] .into_iter() .collect(), ), @@ -29361,8 +29990,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -29415,7 +30044,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_reagents: true, }, consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), @@ -30063,14 +30692,21 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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 : + .collect() }), ("ItemKitLinearRail".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(), 10f64), - ("Solder".into(), 2f64), ("Steel".into(), 4f64)] .into_iter() + count_types : 1i64, reagents : vec![("Steel".into(), 3f64)] + .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 }, @@ -30148,6 +30784,14 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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() }), + ("ItemKitRoboticArm".into(), Recipe { tier : MachineTier::TierOne, + time : 150f64, 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![("Astroloy".into(), 15f64), ("Hastelloy".into(), + 5f64), ("Inconel".into(), 10f64)] .into_iter().collect() }), ("ItemKitSatelliteDish".into(), Recipe { tier : MachineTier::TierOne, time : 120f64, energy : 24000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange { @@ -30156,8 +30800,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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, + .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![] @@ -31054,7 +31698,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "StructureEmergencyButton".into(), prefab_hash: 1668452680i32, - desc: "Description coming.".into(), + desc: "".into(), name: "Important Button".into(), }, structure: StructureInfo { small_grid: true }, @@ -31308,8 +31952,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()), ("2".into(), vec![] .into_iter().collect()) ] .into_iter() .collect(), @@ -31382,7 +32026,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] + vec![("0".into(), "Idle".into()), ("1".into(), "Active".into())] .into_iter() .collect(), ), @@ -31501,7 +32145,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31657,7 +32301,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31665,7 +32309,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31673,7 +32317,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31681,7 +32325,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31689,7 +32333,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31697,7 +32341,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31705,7 +32349,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, + .collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31713,7 +32357,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, + .collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31721,7 +32365,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, + .collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31729,7 +32373,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, + .collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31737,7 +32381,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, + .collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31745,7 +32389,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, + .collect()), ("11".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31753,7 +32397,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, + .collect()), ("12".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31761,7 +32405,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, + .collect()), ("13".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31769,7 +32413,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, + .collect()), ("14".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31871,7 +32515,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31879,7 +32523,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -31969,8 +32613,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -32009,7 +32653,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -32325,7 +32969,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -32513,8 +33157,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right" - .into()) + ("0".into(), "Left".into()), ("1".into(), "Center".into()), ("2" + .into(), "Right".into()) ] .into_iter() .collect(), @@ -32572,7 +33216,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -32807,7 +33451,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -32815,7 +33459,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -32823,7 +33467,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -32852,8 +33496,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Idle".into()), (1u32, "Happy".into()), (2u32, "UnHappy" - .into()), (3u32, "Dead".into()) + ("0".into(), "Idle".into()), ("1".into(), "Happy".into()), ("2" + .into(), "UnHappy".into()), ("3".into(), "Dead".into()) ] .into_iter() .collect(), @@ -33065,8 +33709,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -33085,7 +33729,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -33138,8 +33782,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -33192,7 +33836,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_reagents: true, }, consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), @@ -33728,69 +34372,62 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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, + ("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(), 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, + 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![("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, + 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(), 3f64)] .into_iter().collect() }), - ("ItemKitStandardChute".into(), Recipe { tier : MachineTier::TierOne, - time : 5f64, energy : 500f64, temperature : RecipeRange { start : + 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![("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 : + 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 : @@ -34388,7 +35025,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -34400,7 +35037,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -34412,7 +35049,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -34424,7 +35061,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -34436,7 +35073,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -34448,7 +35085,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -34460,7 +35097,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, + .collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -34472,7 +35109,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, + .collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -34599,7 +35236,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -34612,7 +35249,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Seeding, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -34701,7 +35338,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -35294,7 +35931,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -35345,7 +35982,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -35396,7 +36033,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -35447,7 +36084,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -35499,27 +36136,32 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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" + ("0".into(), "None".into()), ("1".into(), "Alarm2".into()), ("2" + .into(), "Alarm3".into()), ("3".into(), "Alarm4".into()), ("4" + .into(), "Alarm5".into()), ("5".into(), "Alarm6".into()), ("6" + .into(), "Alarm7".into()), ("7".into(), "Music1".into()), ("8" + .into(), "Music2".into()), ("9".into(), "Music3".into()), ("10" + .into(), "Alarm8".into()), ("11".into(), "Alarm9".into()), ("12" + .into(), "Alarm10".into()), ("13".into(), "Alarm11".into()), + ("14".into(), "Alarm12".into()), ("15".into(), "Danger".into()), + ("16".into(), "Warning".into()), ("17".into(), "Alert".into()), + ("18".into(), "StormIncoming".into()), ("19".into(), + "IntruderAlert".into()), ("20".into(), "Depressurising".into()), + ("21".into(), "Pressurising".into()), ("22".into(), + "AirlockCycling".into()), ("23".into(), "PowerLow".into()), ("24" + .into(), "SystemFailure".into()), ("25".into(), "Welcome" + .into()), ("26".into(), "MalfunctionDetected".into()), ("27" + .into(), "HaltWhoGoesThere".into()), ("28".into(), "FireFireFire" + .into()), ("29".into(), "One".into()), ("30".into(), "Two" + .into()), ("31".into(), "Three".into()), ("32".into(), "Four" + .into()), ("33".into(), "Five".into()), ("34".into(), "Floor" + .into()), ("35".into(), "RocketLaunching".into()), ("36".into(), + "LiftOff".into()), ("37".into(), "TraderIncoming".into()), ("38" + .into(), "TraderLanded".into()), ("39".into(), "PressureHigh" + .into()), ("40".into(), "PressureLow".into()), ("41".into(), + "TemperatureHigh".into()), ("42".into(), "TemperatureLow" + .into()), ("43".into(), "PollutantsDetected".into()), ("44" + .into(), "HighCarbonDioxide".into()), ("45".into(), "Alarm1" .into()) ] .into_iter() @@ -35815,7 +36457,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -35851,7 +36493,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + desc: "This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer (Modern) 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(), }, @@ -36079,7 +36721,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "StructureLightRound".into(), prefab_hash: 1514476632i32, - desc: "Description coming.".into(), + desc: "".into(), name: "Light Round".into(), }, structure: StructureInfo { small_grid: true }, @@ -36128,7 +36770,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "StructureLightRoundAngled".into(), prefab_hash: 1592905386i32, - desc: "Description coming.".into(), + desc: "".into(), name: "Light Round (Angled)".into(), }, structure: StructureInfo { small_grid: true }, @@ -36177,7 +36819,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "StructureLightRoundSmall".into(), prefab_hash: 1436121888i32, - desc: "Description coming.".into(), + desc: "".into(), name: "Light Round (Small)".into(), }, structure: StructureInfo { small_grid: true }, @@ -36398,56 +37040,6 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .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 { @@ -36860,7 +37452,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -36951,7 +37543,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Right".into()), (1u32, "Left".into())] + vec![("0".into(), "Right".into()), ("1".into(), "Left".into())] .into_iter() .collect(), ), @@ -37110,8 +37702,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right" - .into()) + ("0".into(), "Left".into()), ("1".into(), "Center".into()), ("2" + .into(), "Right".into()) ] .into_iter() .collect(), @@ -37149,7 +37741,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "StructureLiquidValve".into(), prefab_hash: 1849974453i32, desc: "".into(), - name: "Liquid Valve".into(), + name: "Valve (Liquid)".into(), }, structure: StructureInfo { small_grid: true }, thermal_info: None, @@ -37261,7 +37853,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -37269,7 +37861,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -37277,7 +37869,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -37285,7 +37877,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -37564,8 +38156,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, "Less" - .into()), (3u32, "NotEquals".into()) + ("0".into(), "Equals".into()), ("1".into(), "Greater".into()), + ("2".into(), "Less".into()), ("3".into(), "NotEquals".into()) ] .into_iter() .collect(), @@ -37674,9 +38266,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "AND".into()), (1u32, "OR".into()), (2u32, "XOR".into()), - (3u32, "NAND".into()), (4u32, "NOR".into()), (5u32, "XNOR" - .into()) + ("0".into(), "AND".into()), ("1".into(), "OR".into()), ("2" + .into(), "XOR".into()), ("3".into(), "NAND".into()), ("4".into(), + "NOR".into()), ("5".into(), "XNOR".into()) ] .into_iter() .collect(), @@ -37785,10 +38377,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Add".into()), ("1".into(), "Subtract".into()), ("2" + .into(), "Multiply".into()), ("3".into(), "Divide".into()), ("4" + .into(), "Mod".into()), ("5".into(), "Atan2".into()), ("6" + .into(), "Pow".into()), ("7".into(), "Log".into()) ] .into_iter() .collect(), @@ -37849,12 +38441,14 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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()) + ("0".into(), "Ceil".into()), ("1".into(), "Floor".into()), ("2" + .into(), "Abs".into()), ("3".into(), "Log".into()), ("4".into(), + "Exp".into()), ("5".into(), "Round".into()), ("6".into(), "Rand" + .into()), ("7".into(), "Sqrt".into()), ("8".into(), "Sin" + .into()), ("9".into(), "Cos".into()), ("10".into(), "Tan" + .into()), ("11".into(), "Asin".into()), ("12".into(), "Acos" + .into()), ("13".into(), "Atan".into()), ("14".into(), "Not" + .into()) ] .into_iter() .collect(), @@ -37960,7 +38554,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Greater".into()), (1u32, "Less".into())] + vec![("0".into(), "Greater".into()), ("1".into(), "Less".into())] .into_iter() .collect(), ), @@ -38264,8 +38858,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, "Less" - .into()), (3u32, "NotEquals".into()) + ("0".into(), "Equals".into()), ("1".into(), "Greater".into()), + ("2".into(), "Less".into()), ("3".into(), "NotEquals".into()) ] .into_iter() .collect(), @@ -38365,7 +38959,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -38373,7 +38967,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -38381,7 +38975,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -38389,7 +38983,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -38416,7 +39010,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "All".into()), (1u32, "Any".into()), (2u32, "None".into()) + ("0".into(), "All".into()), ("1".into(), "Any".into()), ("2" + .into(), "None".into()) ] .into_iter() .collect(), @@ -38841,7 +39436,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< logic_slot_types: vec![].into_iter().collect(), logic_types: vec![].into_iter().collect(), modes: Some( - vec![(0u32, "Passive".into()), (1u32, "Active".into())] + vec![("0".into(), "Passive".into()), ("1".into(), "Active".into())] .into_iter() .collect(), ), @@ -39006,7 +39601,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -39163,7 +39758,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + vec![("0".into(), "Operate".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -39514,7 +40109,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39613,7 +40208,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Idle".into()), (1u32, "Active".into())] + vec![("0".into(), "Idle".into()), ("1".into(), "Active".into())] .into_iter() .collect(), ), @@ -39715,7 +40310,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39723,7 +40318,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39783,7 +40378,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39791,7 +40386,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39799,7 +40394,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39807,7 +40402,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39815,7 +40410,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39823,7 +40418,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39831,7 +40426,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, + .collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39839,7 +40434,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, + .collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39847,7 +40442,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, + .collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -39855,7 +40450,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, + .collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -40496,7 +41091,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + 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 (Modern) via a {Logic system." .into(), name: "Pipe Analyzer".into(), }, @@ -40969,6 +41564,56 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + -523832822i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidOneWayValveLever".into(), + prefab_hash: -523832822i32, + desc: "".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::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::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: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ); map.insert( 667597982i32, StructureTemplate { @@ -41050,13 +41695,12 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into(), ); map.insert( - 1580412404i32, + 1289581593i32, 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(), + prefab_name: "StructurePipeOneWayValveLever".into(), + prefab_hash: 1289581593i32, + desc: "".into(), name: "One Way Valve (Gas)".into(), }, structure: StructureInfo { small_grid: true }, @@ -41067,8 +41711,9 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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) + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) ] .into_iter() .collect(), @@ -41092,7 +41737,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_color_state: false, has_lock_state: false, has_mode_state: false, - has_on_off_state: false, + has_on_off_state: true, has_open_state: false, has_reagents: false, }, @@ -41363,7 +42008,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -41389,7 +42034,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< wireless_logic: false, circuit_holder: false, }, - slots: vec![SlotInfo { name : "".into(), typ : Class::None }] + slots: vec![SlotInfo { name : "Portables".into(), typ : Class::Portables }] .into_iter() .collect(), device: DeviceInfo { @@ -41428,7 +42073,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -41507,7 +42152,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())] + vec![("0".into(), "Unlinked".into()), ("1".into(), "Linked".into())] .into_iter() .collect(), ), @@ -41619,7 +42264,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())] + vec![("0".into(), "Unlinked".into()), ("1".into(), "Linked".into())] .into_iter() .collect(), ), @@ -41768,8 +42413,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right" - .into()) + ("0".into(), "Left".into()), ("1".into(), "Center".into()), ("2" + .into(), "Right".into()) ] .into_iter() .collect(), @@ -41828,7 +42473,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Outward".into()), (1u32, "Inward".into())] + vec![("0".into(), "Outward".into()), ("1".into(), "Inward".into())] .into_iter() .collect(), ), @@ -41887,7 +42532,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Outward".into()), (1u32, "Inward".into())] + vec![("0".into(), "Outward".into()), ("1".into(), "Inward".into())] .into_iter() .collect(), ), @@ -42533,7 +43178,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -42541,7 +43186,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -42619,68 +43264,82 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()), ("2".into(), vec![] .into_iter().collect()), + ("3".into(), vec![] .into_iter().collect()), ("4".into(), vec![] + .into_iter().collect()), ("5".into(), vec![] .into_iter().collect()), + ("6".into(), vec![] .into_iter().collect()), ("7".into(), vec![] + .into_iter().collect()), ("8".into(), vec![] .into_iter().collect()), + ("9".into(), vec![] .into_iter().collect()), ("10".into(), vec![] + .into_iter().collect()), ("11".into(), vec![] .into_iter() + .collect()), ("12".into(), vec![] .into_iter().collect()), ("13" + .into(), vec![] .into_iter().collect()), ("14".into(), vec![] + .into_iter().collect()), ("15".into(), vec![] .into_iter() + .collect()), ("16".into(), vec![] .into_iter().collect()), ("17" + .into(), vec![] .into_iter().collect()), ("18".into(), vec![] + .into_iter().collect()), ("19".into(), vec![] .into_iter() + .collect()), ("20".into(), vec![] .into_iter().collect()), ("21" + .into(), vec![] .into_iter().collect()), ("22".into(), vec![] + .into_iter().collect()), ("23".into(), vec![] .into_iter() + .collect()), ("24".into(), vec![] .into_iter().collect()), ("25" + .into(), vec![] .into_iter().collect()), ("26".into(), vec![] + .into_iter().collect()), ("27".into(), vec![] .into_iter() + .collect()), ("28".into(), vec![] .into_iter().collect()), ("29" + .into(), vec![] .into_iter().collect()), ("30".into(), vec![] + .into_iter().collect()), ("31".into(), vec![] .into_iter() + .collect()), ("32".into(), vec![] .into_iter().collect()), ("33" + .into(), vec![] .into_iter().collect()), ("34".into(), vec![] + .into_iter().collect()), ("35".into(), vec![] .into_iter() + .collect()), ("36".into(), vec![] .into_iter().collect()), ("37" + .into(), vec![] .into_iter().collect()), ("38".into(), vec![] + .into_iter().collect()), ("39".into(), vec![] .into_iter() + .collect()), ("40".into(), vec![] .into_iter().collect()), ("41" + .into(), vec![] .into_iter().collect()), ("42".into(), vec![] + .into_iter().collect()), ("43".into(), vec![] .into_iter() + .collect()), ("44".into(), vec![] .into_iter().collect()), ("45" + .into(), vec![] .into_iter().collect()), ("46".into(), vec![] + .into_iter().collect()), ("47".into(), vec![] .into_iter() + .collect()), ("48".into(), vec![] .into_iter().collect()), ("49" + .into(), vec![] .into_iter().collect()), ("50".into(), vec![] + .into_iter().collect()), ("51".into(), vec![] .into_iter() + .collect()), ("52".into(), vec![] .into_iter().collect()), ("53" + .into(), vec![] .into_iter().collect()), ("54".into(), vec![] + .into_iter().collect()), ("55".into(), vec![] .into_iter() + .collect()), ("56".into(), vec![] .into_iter().collect()), ("57" + .into(), vec![] .into_iter().collect()), ("58".into(), vec![] + .into_iter().collect()), ("59".into(), vec![] .into_iter() + .collect()), ("60".into(), vec![] .into_iter().collect()), ("61" + .into(), vec![] .into_iter().collect()), ("62".into(), vec![] + .into_iter().collect()), ("63".into(), vec![] .into_iter() + .collect()), ("64".into(), vec![] .into_iter().collect()), ("65" + .into(), vec![] .into_iter().collect()), ("66".into(), vec![] + .into_iter().collect()), ("67".into(), vec![] .into_iter() + .collect()), ("68".into(), vec![] .into_iter().collect()), ("69" + .into(), vec![] .into_iter().collect()), ("70".into(), vec![] + .into_iter().collect()), ("71".into(), vec![] .into_iter() + .collect()), ("72".into(), vec![] .into_iter().collect()), ("73" + .into(), vec![] .into_iter().collect()), ("74".into(), vec![] + .into_iter().collect()), ("75".into(), vec![] .into_iter() + .collect()), ("76".into(), vec![] .into_iter().collect()), ("77" + .into(), vec![] .into_iter().collect()), ("78".into(), vec![] + .into_iter().collect()), ("79".into(), vec![] .into_iter() + .collect()), ("80".into(), vec![] .into_iter().collect()), ("81" + .into(), vec![] .into_iter().collect()), ("82".into(), vec![] + .into_iter().collect()), ("83".into(), vec![] .into_iter() + .collect()), ("84".into(), vec![] .into_iter().collect()), ("85" + .into(), vec![] .into_iter().collect()), ("86".into(), vec![] + .into_iter().collect()), ("87".into(), vec![] .into_iter() + .collect()), ("88".into(), vec![] .into_iter().collect()), ("89" + .into(), vec![] .into_iter().collect()), ("90".into(), vec![] + .into_iter().collect()), ("91".into(), vec![] .into_iter() + .collect()), ("92".into(), vec![] .into_iter().collect()), ("93" + .into(), vec![] .into_iter().collect()), ("94".into(), vec![] + .into_iter().collect()), ("95".into(), vec![] .into_iter() + .collect()), ("96".into(), vec![] .into_iter().collect()), ("97" + .into(), vec![] .into_iter().collect()), ("98".into(), vec![] + .into_iter().collect()), ("99".into(), vec![] .into_iter() + .collect()), ("100".into(), vec![] .into_iter().collect()), ("101" + .into(), vec![] .into_iter().collect()) ] .into_iter() .collect(), @@ -42867,6 +43526,21 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + -475746988i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureReinforcedWall".into(), + prefab_hash: -475746988i32, + desc: "".into(), + name: "Reinforced Wall".into(), + }, + structure: StructureInfo { small_grid: false }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); map.insert( 1939061729i32, StructureTemplate { @@ -42899,6 +43573,216 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .into(), ); + map.insert( + -2131782367i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRobotArmDoor".into(), + prefab_hash: -2131782367i32, + desc: "".into(), + name: "Linear Rail 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::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: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ); + map.insert( + -1818718810i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRoboticArmDock".into(), + prefab_hash: -1818718810i32, + desc: "The Linear Articulated Rail Entity or LArRE can be used to plant, harvest and fertilize plants in plant trays. It can also grab items from a Chute Export Bin and drop them in a Chute Import Bin. LArRE can interact with plant trays or chute bins built under a linear rail station or built under its dock." + .into(), + name: "LArRE Dock".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + logic: LogicInfo { + logic_slot_types: vec![ + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::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::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::Index, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Arm Slot".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::RoboticArmRail, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::RoboticArmRail, 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( + -1323992709i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRoboticArmRailCorner".into(), + prefab_hash: -1323992709i32, + desc: "".into(), + name: "Linear Rail Corner".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1974053060i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRoboticArmRailCornerStop".into(), + prefab_hash: 1974053060i32, + desc: "".into(), + name: "Linear Rail Corner Station".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -267108827i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRoboticArmRailInnerCorner".into(), + prefab_hash: -267108827i32, + desc: "".into(), + name: "Linear Rail Inner Corner".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -33470826i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRoboticArmRailOuterCorner".into(), + prefab_hash: -33470826i32, + desc: "".into(), + name: "Linear Rail Outer Corner".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + -1785844184i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRoboticArmRailStraight".into(), + prefab_hash: -1785844184i32, + desc: "".into(), + name: "Linear Rail Straight".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); + map.insert( + 1800701885i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRoboticArmRailStraightStop".into(), + prefab_hash: 1800701885i32, + desc: "".into(), + name: "Linear Rail Straight Station".into(), + }, + structure: StructureInfo { small_grid: true }, + thermal_info: None, + internal_atmo_info: None, + } + .into(), + ); map.insert( 808389066i32, StructureLogicDeviceTemplate { @@ -42961,15 +43845,15 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicType::Size, MemoryAccess::Read), (LogicType::TotalQuantity, MemoryAccess::Read), (LogicType::MinedQuantity, MemoryAccess::Read), (LogicType::NameHash, - MemoryAccess::Read) + MemoryAccess::Read), (LogicType::Altitude, 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()) + ("0".into(), "Invalid".into()), ("1".into(), "None".into()), ("2" + .into(), "Mine".into()), ("3".into(), "Survey".into()), ("4" + .into(), "Discover".into()), ("5".into(), "Chart".into()) ] .into_iter() .collect(), @@ -43133,7 +44017,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -43277,8 +44161,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -43331,7 +44215,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_reagents: true, }, consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), @@ -43981,8 +44865,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -44045,7 +44929,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< thermal_info: None, internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -44186,7 +45070,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< thermal_info: None, internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -44239,7 +45123,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< thermal_info: None, internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -44296,8 +45180,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -44317,7 +45201,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + vec![("0".into(), "Mode0".into()), ("1".into(), "Mode1".into())] .into_iter() .collect(), ), @@ -44361,7 +45245,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + desc: "This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer (Modern) 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(), }, @@ -44435,8 +45319,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -44489,7 +45373,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_reagents: true, }, consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), @@ -44638,38 +45522,37 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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, + 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 : 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, + .collect() }, count_types : 3i64, reagents : vec![("Electrum".into(), + 1f64), ("Silicon".into(), 3f64), ("Solder".into(), 1f64)] + .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 : 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![("Gold".into(), 1f64), ("Iron" + .into(), 1f64), ("Silicon".into(), 3f64)] .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 : 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() }), + 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 { @@ -45091,7 +45974,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45099,7 +45982,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45107,7 +45990,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45115,7 +45998,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45123,7 +46006,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45131,7 +46014,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45139,7 +46022,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, + .collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45147,7 +46030,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, + .collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45155,7 +46038,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, + .collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45163,7 +46046,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, + .collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45171,7 +46054,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, + .collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45179,7 +46062,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, + .collect()), ("11".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45187,7 +46070,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, + .collect()), ("12".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45195,7 +46078,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, + .collect()), ("13".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45203,7 +46086,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, + .collect()), ("14".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45271,7 +46154,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45279,7 +46162,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45339,7 +46222,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45347,7 +46230,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45355,7 +46238,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45363,7 +46246,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45371,7 +46254,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45379,7 +46262,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45387,7 +46270,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, + .collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45395,7 +46278,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, + .collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45403,7 +46286,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, + .collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45411,7 +46294,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, + .collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45656,7 +46539,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab: PrefabInfo { prefab_name: "StructureSingleBed".into(), prefab_hash: -492611i32, - desc: "Description coming.".into(), + desc: "".into(), name: "Single Bed".into(), }, structure: StructureInfo { small_grid: true }, @@ -45664,7 +46547,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45722,7 +46605,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -45796,7 +46679,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -45816,8 +46699,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, - "Unpowered".into()) + ("0".into(), "Safe".into()), ("1".into(), "Unsafe".into()), ("2" + .into(), "Unpowered".into()) ] .into_iter() .collect(), @@ -45868,7 +46751,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -45888,8 +46771,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, - "Unpowered".into()) + ("0".into(), "Safe".into()), ("1".into(), "Unsafe".into()), ("2" + .into(), "Unpowered".into()) ] .into_iter() .collect(), @@ -45940,7 +46823,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -45960,8 +46843,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, - "Unpowered".into()) + ("0".into(), "Safe".into()), ("1".into(), "Unsafe".into()), ("2" + .into(), "Unpowered".into()) ] .into_iter() .collect(), @@ -46009,7 +46892,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< thermal_info: None, internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -46208,7 +47091,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + desc: "This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer (Modern) 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(), }, @@ -46793,7 +47676,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -46816,7 +47699,10 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Not Generating".into()), (1u32, "Generating".into())] + vec![ + ("0".into(), "Not Generating".into()), ("1".into(), "Generating" + .into()) + ] .into_iter() .collect(), ), @@ -46847,7 +47733,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_reagents: false, }, consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemCharcoal".into(), "ItemCoalOre".into(), "ItemSolidFuel".into() ] .into_iter() @@ -46873,7 +47759,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -46881,7 +47767,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -46889,7 +47775,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -46897,7 +47783,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -46925,8 +47811,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "Split".into()), (1u32, "Filter".into()), (2u32, "Logic" - .into()) + ("0".into(), "Split".into()), ("1".into(), "Filter".into()), ("2" + .into(), "Logic".into()) ] .into_iter() .collect(), @@ -46982,7 +47868,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -46990,7 +47876,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -46998,7 +47884,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47027,7 +47913,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] + vec![("0".into(), "Automatic".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -47079,7 +47965,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47087,7 +47973,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47095,7 +47981,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47124,7 +48010,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] + vec![("0".into(), "Automatic".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -47332,7 +48218,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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." + 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(), }, @@ -47343,7 +48229,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< }), internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -47428,7 +48314,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47436,7 +48322,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47444,7 +48330,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47452,7 +48338,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (3u32, vec![(LogicSlotType::Occupied, + .collect()), ("3".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47460,7 +48346,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (4u32, vec![(LogicSlotType::Occupied, + .collect()), ("4".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47468,7 +48354,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (5u32, vec![(LogicSlotType::Occupied, + .collect()), ("5".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47476,7 +48362,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (6u32, vec![(LogicSlotType::Occupied, + .collect()), ("6".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47484,7 +48370,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (7u32, vec![(LogicSlotType::Occupied, + .collect()), ("7".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47492,7 +48378,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (8u32, vec![(LogicSlotType::Occupied, + .collect()), ("8".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47500,7 +48386,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (9u32, vec![(LogicSlotType::Occupied, + .collect()), ("9".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47508,7 +48394,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (10u32, vec![(LogicSlotType::Occupied, + .collect()), ("10".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47516,7 +48402,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (11u32, vec![(LogicSlotType::Occupied, + .collect()), ("11".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47524,7 +48410,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (12u32, vec![(LogicSlotType::Occupied, + .collect()), ("12".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47532,7 +48418,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (13u32, vec![(LogicSlotType::Occupied, + .collect()), ("13".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47540,7 +48426,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (14u32, vec![(LogicSlotType::Occupied, + .collect()), ("14".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47548,7 +48434,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (15u32, vec![(LogicSlotType::Occupied, + .collect()), ("15".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47556,7 +48442,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (16u32, vec![(LogicSlotType::Occupied, + .collect()), ("16".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47564,7 +48450,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (17u32, vec![(LogicSlotType::Occupied, + .collect()), ("17".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47572,7 +48458,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (18u32, vec![(LogicSlotType::Occupied, + .collect()), ("18".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47580,7 +48466,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (19u32, vec![(LogicSlotType::Occupied, + .collect()), ("19".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47588,7 +48474,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (20u32, vec![(LogicSlotType::Occupied, + .collect()), ("20".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47596,7 +48482,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (21u32, vec![(LogicSlotType::Occupied, + .collect()), ("21".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47604,7 +48490,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (22u32, vec![(LogicSlotType::Occupied, + .collect()), ("22".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47612,7 +48498,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (23u32, vec![(LogicSlotType::Occupied, + .collect()), ("23".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47620,7 +48506,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (24u32, vec![(LogicSlotType::Occupied, + .collect()), ("24".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47628,7 +48514,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (25u32, vec![(LogicSlotType::Occupied, + .collect()), ("25".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47636,7 +48522,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (26u32, vec![(LogicSlotType::Occupied, + .collect()), ("26".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47644,7 +48530,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (27u32, vec![(LogicSlotType::Occupied, + .collect()), ("27".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47652,7 +48538,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (28u32, vec![(LogicSlotType::Occupied, + .collect()), ("28".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47660,7 +48546,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (29u32, vec![(LogicSlotType::Occupied, + .collect()), ("29".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -47741,7 +48627,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -47755,7 +48641,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::ReadWrite), (LogicSlotType::Lock, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, - MemoryAccess::Read)] .into_iter().collect()), (1u32, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -47770,7 +48656,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (2u32, vec![(LogicSlotType::Occupied, + .collect()), ("2".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -48343,8 +49229,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() - .collect()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()) ] .into_iter() .collect(), @@ -48397,7 +49283,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_reagents: true, }, consumer_info: ConsumerInfo { - consumed_resouces: vec![ + consumed_resources: vec![ "ItemAstroloyIngot".into(), "ItemConstantanIngot".into(), "ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot" .into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(), @@ -48640,68 +49526,76 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< : 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 : + ("ItemExplosive".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 : 1i64, - reagents : vec![("Iron".into(), 1f64)] .into_iter().collect() }), - ("ItemFlashlight".into(), Recipe { tier : MachineTier::TierOne, time - : 15f64, energy : 500f64, temperature : RecipeRange { start : 1f64, + reagents : vec![] .into_iter().collect() }, count_types : 3i64, + reagents : vec![("Electrum".into(), 1f64), ("Silicon".into(), 7f64), + ("Solder".into(), 2f64)] .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![("Copper".into(), 2f64), ("Gold".into(), 2f64)] - .into_iter().collect() }), ("ItemGlasses".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 250f64, temperature : + 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 : 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 : + 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 : 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 : + 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 : @@ -48837,22 +49731,30 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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 : + .into_iter().collect() }), ("ItemMiningCharge".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(), 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() }), + count_types : 3i64, reagents : vec![("Gold".into(), 1f64), ("Iron" + .into(), 1f64), ("Silicon".into(), 5f64)] .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 }, @@ -48892,15 +49794,15 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .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 : + 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 : 2i64, reagents : vec![("Gold".into(), 1f64), ("Iron" - .into(), 3f64)] .into_iter().collect() }), - ("ItemReusableFireExtinguisher".into(), Recipe { tier : - MachineTier::TierOne, time : 20f64, energy : 1000f64, temperature : + count_types : 3i64, reagents : vec![("Copper".into(), 5f64), + ("Solder".into(), 5f64), ("Steel".into(), 5f64)] .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, @@ -49941,7 +50843,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Right".into()), (1u32, "Left".into())] + vec![("0".into(), "Right".into()), ("1".into(), "Left".into())] .into_iter() .collect(), ), @@ -49988,7 +50890,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -49996,7 +50898,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() - .collect()), (1u32, vec![(LogicSlotType::Occupied, + .collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -50023,7 +50925,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] + vec![("0".into(), "Automatic".into()), ("1".into(), "Logic".into())] .into_iter() .collect(), ), @@ -50114,7 +51016,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< prefab_name: "StructureValve".into(), prefab_hash: -692036078i32, desc: "".into(), - name: "Valve".into(), + name: "Valve (Gas)".into(), }, structure: StructureInfo { small_grid: true }, thermal_info: None, @@ -50172,68 +51074,82 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< 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()) + ("0".into(), vec![] .into_iter().collect()), ("1".into(), vec![] + .into_iter().collect()), ("2".into(), vec![] .into_iter().collect()), + ("3".into(), vec![] .into_iter().collect()), ("4".into(), vec![] + .into_iter().collect()), ("5".into(), vec![] .into_iter().collect()), + ("6".into(), vec![] .into_iter().collect()), ("7".into(), vec![] + .into_iter().collect()), ("8".into(), vec![] .into_iter().collect()), + ("9".into(), vec![] .into_iter().collect()), ("10".into(), vec![] + .into_iter().collect()), ("11".into(), vec![] .into_iter() + .collect()), ("12".into(), vec![] .into_iter().collect()), ("13" + .into(), vec![] .into_iter().collect()), ("14".into(), vec![] + .into_iter().collect()), ("15".into(), vec![] .into_iter() + .collect()), ("16".into(), vec![] .into_iter().collect()), ("17" + .into(), vec![] .into_iter().collect()), ("18".into(), vec![] + .into_iter().collect()), ("19".into(), vec![] .into_iter() + .collect()), ("20".into(), vec![] .into_iter().collect()), ("21" + .into(), vec![] .into_iter().collect()), ("22".into(), vec![] + .into_iter().collect()), ("23".into(), vec![] .into_iter() + .collect()), ("24".into(), vec![] .into_iter().collect()), ("25" + .into(), vec![] .into_iter().collect()), ("26".into(), vec![] + .into_iter().collect()), ("27".into(), vec![] .into_iter() + .collect()), ("28".into(), vec![] .into_iter().collect()), ("29" + .into(), vec![] .into_iter().collect()), ("30".into(), vec![] + .into_iter().collect()), ("31".into(), vec![] .into_iter() + .collect()), ("32".into(), vec![] .into_iter().collect()), ("33" + .into(), vec![] .into_iter().collect()), ("34".into(), vec![] + .into_iter().collect()), ("35".into(), vec![] .into_iter() + .collect()), ("36".into(), vec![] .into_iter().collect()), ("37" + .into(), vec![] .into_iter().collect()), ("38".into(), vec![] + .into_iter().collect()), ("39".into(), vec![] .into_iter() + .collect()), ("40".into(), vec![] .into_iter().collect()), ("41" + .into(), vec![] .into_iter().collect()), ("42".into(), vec![] + .into_iter().collect()), ("43".into(), vec![] .into_iter() + .collect()), ("44".into(), vec![] .into_iter().collect()), ("45" + .into(), vec![] .into_iter().collect()), ("46".into(), vec![] + .into_iter().collect()), ("47".into(), vec![] .into_iter() + .collect()), ("48".into(), vec![] .into_iter().collect()), ("49" + .into(), vec![] .into_iter().collect()), ("50".into(), vec![] + .into_iter().collect()), ("51".into(), vec![] .into_iter() + .collect()), ("52".into(), vec![] .into_iter().collect()), ("53" + .into(), vec![] .into_iter().collect()), ("54".into(), vec![] + .into_iter().collect()), ("55".into(), vec![] .into_iter() + .collect()), ("56".into(), vec![] .into_iter().collect()), ("57" + .into(), vec![] .into_iter().collect()), ("58".into(), vec![] + .into_iter().collect()), ("59".into(), vec![] .into_iter() + .collect()), ("60".into(), vec![] .into_iter().collect()), ("61" + .into(), vec![] .into_iter().collect()), ("62".into(), vec![] + .into_iter().collect()), ("63".into(), vec![] .into_iter() + .collect()), ("64".into(), vec![] .into_iter().collect()), ("65" + .into(), vec![] .into_iter().collect()), ("66".into(), vec![] + .into_iter().collect()), ("67".into(), vec![] .into_iter() + .collect()), ("68".into(), vec![] .into_iter().collect()), ("69" + .into(), vec![] .into_iter().collect()), ("70".into(), vec![] + .into_iter().collect()), ("71".into(), vec![] .into_iter() + .collect()), ("72".into(), vec![] .into_iter().collect()), ("73" + .into(), vec![] .into_iter().collect()), ("74".into(), vec![] + .into_iter().collect()), ("75".into(), vec![] .into_iter() + .collect()), ("76".into(), vec![] .into_iter().collect()), ("77" + .into(), vec![] .into_iter().collect()), ("78".into(), vec![] + .into_iter().collect()), ("79".into(), vec![] .into_iter() + .collect()), ("80".into(), vec![] .into_iter().collect()), ("81" + .into(), vec![] .into_iter().collect()), ("82".into(), vec![] + .into_iter().collect()), ("83".into(), vec![] .into_iter() + .collect()), ("84".into(), vec![] .into_iter().collect()), ("85" + .into(), vec![] .into_iter().collect()), ("86".into(), vec![] + .into_iter().collect()), ("87".into(), vec![] .into_iter() + .collect()), ("88".into(), vec![] .into_iter().collect()), ("89" + .into(), vec![] .into_iter().collect()), ("90".into(), vec![] + .into_iter().collect()), ("91".into(), vec![] .into_iter() + .collect()), ("92".into(), vec![] .into_iter().collect()), ("93" + .into(), vec![] .into_iter().collect()), ("94".into(), vec![] + .into_iter().collect()), ("95".into(), vec![] .into_iter() + .collect()), ("96".into(), vec![] .into_iter().collect()), ("97" + .into(), vec![] .into_iter().collect()), ("98".into(), vec![] + .into_iter().collect()), ("99".into(), vec![] .into_iter() + .collect()), ("100".into(), vec![] .into_iter().collect()), ("101" + .into(), vec![] .into_iter().collect()) ] .into_iter() .collect(), @@ -50542,7 +51458,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -50745,7 +51661,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -50948,7 +51864,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -51358,7 +52274,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -51370,7 +52286,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, - MemoryAccess::Read)] .into_iter().collect()), (1u32, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -51440,7 +52356,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -51452,7 +52368,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, - MemoryAccess::Read)] .into_iter().collect()), (1u32, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -51522,7 +52438,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -51534,7 +52450,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, - MemoryAccess::Read)] .into_iter().collect()), (1u32, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -51607,7 +52523,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), @@ -51619,7 +52535,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< (LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open, MemoryAccess::ReadWrite), (LogicSlotType::SortingClass, MemoryAccess::Read), (LogicSlotType::ReferenceId, - MemoryAccess::Read)] .into_iter().collect()), (1u32, + MemoryAccess::Read)] .into_iter().collect()), ("1".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), @@ -51776,7 +52692,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< ); map.insert( 887383294i32, - StructureLogicDeviceTemplate { + StructureLogicDeviceConsumerTemplate { prefab: PrefabInfo { prefab_name: "StructureWaterPurifier".into(), prefab_hash: 887383294i32, @@ -51788,7 +52704,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< thermal_info: None, internal_atmo_info: None, logic: LogicInfo { - logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + logic_slot_types: vec![("0".into(), vec![] .into_iter().collect())] .into_iter() .collect(), logic_types: vec![ @@ -51832,6 +52748,11 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< has_open_state: false, has_reagents: false, }, + consumer_info: ConsumerInfo { + consumed_resources: vec!["ItemCharcoal".into()].into_iter().collect(), + processed_reagents: vec![].into_iter().collect(), + }, + fabricator_info: None, } .into(), ); @@ -51849,7 +52770,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class, @@ -51931,8 +52852,8 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .collect(), modes: Some( vec![ - (0u32, "NoStorm".into()), (1u32, "StormIncoming".into()), (2u32, - "InStorm".into()) + ("0".into(), "NoStorm".into()), ("1".into(), "StormIncoming" + .into()), ("2".into(), "InStorm".into()) ] .into_iter() .collect(), @@ -52012,64 +52933,6 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< } .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 { @@ -52233,7 +53096,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -52284,7 +53147,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -52306,7 +53169,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Stun".into()), (1u32, "Kill".into())] + vec![("0".into(), "Stun".into()), ("1".into(), "Kill".into())] .into_iter() .collect(), ), @@ -52342,7 +53205,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< internal_atmo_info: None, logic: LogicInfo { logic_slot_types: vec![ - (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + ("0".into(), vec![(LogicSlotType::Occupied, MemoryAccess::Read), (LogicSlotType::OccupantHash, MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge, @@ -52364,7 +53227,7 @@ pub fn build_prefab_database() -> std::collections::BTreeMap< .into_iter() .collect(), modes: Some( - vec![(0u32, "Stun".into()), (1u32, "Kill".into())] + vec![("0".into(), "Stun".into()), ("1".into(), "Kill".into())] .into_iter() .collect(), ), diff --git a/stationeers_data/src/enums/basic.rs b/stationeers_data/src/enums/basic.rs index 46d5f1e..6c811ce 100644 --- a/stationeers_data/src/enums/basic.rs +++ b/stationeers_data/src/enums/basic.rs @@ -583,9 +583,9 @@ pub enum ReEntryProfile { #[strum(props(docs = "", value = "0"))] #[default] None = 0u8, - #[strum(serialize = "Optimal")] + #[strum(serialize = "Low")] #[strum(props(docs = "", value = "1"))] - Optimal = 1u8, + Low = 1u8, #[strum(serialize = "Medium")] #[strum(props(docs = "", value = "2"))] Medium = 2u8, @@ -874,6 +874,12 @@ pub enum Class { #[strum(serialize = "SuitMod")] #[strum(props(docs = "", value = "39"))] SuitMod = 39u8, + #[strum(serialize = "Crate")] + #[strum(props(docs = "", value = "40"))] + Crate = 40u8, + #[strum(serialize = "Portables")] + #[strum(props(docs = "", value = "41"))] + Portables = 41u8, } impl TryFrom for Class { type Error = super::ParseError; @@ -1559,6 +1565,7 @@ impl std::str::FromStr for BasicEnum { "logictype.activate" => Ok(Self::LogicType(LogicType::Activate)), "logictype.airrelease" => Ok(Self::LogicType(LogicType::AirRelease)), "logictype.alignmenterror" => Ok(Self::LogicType(LogicType::AlignmentError)), + "logictype.altitude" => Ok(Self::LogicType(LogicType::Altitude)), "logictype.apex" => Ok(Self::LogicType(LogicType::Apex)), "logictype.autoland" => Ok(Self::LogicType(LogicType::AutoLand)), "logictype.autoshutoff" => Ok(Self::LogicType(LogicType::AutoShutOff)), @@ -2103,10 +2110,10 @@ impl std::str::FromStr for BasicEnum { Ok(Self::PrinterInstruction(PrinterInstruction::WaitUntilNextValid)) } "reentryprofile.high" => Ok(Self::ReEntryProfile(ReEntryProfile::High)), + "reentryprofile.low" => Ok(Self::ReEntryProfile(ReEntryProfile::Low)), "reentryprofile.max" => Ok(Self::ReEntryProfile(ReEntryProfile::Max)), "reentryprofile.medium" => Ok(Self::ReEntryProfile(ReEntryProfile::Medium)), "reentryprofile.none" => Ok(Self::ReEntryProfile(ReEntryProfile::None)), - "reentryprofile.optimal" => Ok(Self::ReEntryProfile(ReEntryProfile::Optimal)), "robotmode.follow" => Ok(Self::RobotMode(RobotMode::Follow)), "robotmode.movetotarget" => Ok(Self::RobotMode(RobotMode::MoveToTarget)), "robotmode.none" => Ok(Self::RobotMode(RobotMode::None)), @@ -2130,6 +2137,7 @@ impl std::str::FromStr for BasicEnum { "slotclass.cartridge" => Ok(Self::SlotClass(Class::Cartridge)), "slotclass.circuit" => Ok(Self::SlotClass(Class::Circuit)), "slotclass.circuitboard" => Ok(Self::SlotClass(Class::Circuitboard)), + "slotclass.crate" => Ok(Self::SlotClass(Class::Crate)), "slotclass.creditcard" => Ok(Self::SlotClass(Class::CreditCard)), "slotclass.datadisk" => Ok(Self::SlotClass(Class::DataDisk)), "slotclass.dirtcanister" => Ok(Self::SlotClass(Class::DirtCanister)), @@ -2150,6 +2158,7 @@ impl std::str::FromStr for BasicEnum { "slotclass.ore" => Ok(Self::SlotClass(Class::Ore)), "slotclass.organ" => Ok(Self::SlotClass(Class::Organ)), "slotclass.plant" => Ok(Self::SlotClass(Class::Plant)), + "slotclass.portables" => Ok(Self::SlotClass(Class::Portables)), "slotclass.programmablechip" => Ok(Self::SlotClass(Class::ProgrammableChip)), "slotclass.scanninghead" => Ok(Self::SlotClass(Class::ScanningHead)), "slotclass.sensorprocessingunit" => { diff --git a/stationeers_data/src/enums/prefabs.rs b/stationeers_data/src/enums/prefabs.rs index d3ed521..f13adc1 100644 --- a/stationeers_data/src/enums/prefabs.rs +++ b/stationeers_data/src/enums/prefabs.rs @@ -47,11 +47,14 @@ pub enum StationpediaPrefab { #[strum( props( name = "Small Satellite Dish", - desc = "This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", + desc = "This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer (Modern) containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", value = "-2138748650" ) )] StructureSmallSatelliteDish = -2138748650i32, + #[strum(serialize = "StructureRobotArmDoor")] + #[strum(props(name = "Linear Rail Door", desc = "", value = "-2131782367"))] + StructureRobotArmDoor = -2131782367i32, #[strum(serialize = "StructureStairwellBackRight")] #[strum(props(name = "Stairwell (Back Right)", desc = "", value = "-2128896573"))] StructureStairwellBackRight = -2128896573i32, @@ -62,7 +65,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Kit (Liquid Pipe Valve)", - desc = "This kit creates a Liquid Valve.", + desc = "This kit creates a Valve (Liquid).", value = "-2126113312" ) )] @@ -189,6 +192,15 @@ pub enum StationpediaPrefab { ) )] StructureWindTurbine = -2082355173i32, + #[strum(serialize = "StructureCompositeWindowShutterController")] + #[strum( + props( + name = "Composite Window Shutter Controller", + desc = "", + value = "-2078371660" + ) + )] + StructureCompositeWindowShutterController = -2078371660i32, #[strum(serialize = "StructureInsulatedPipeTJunction")] #[strum( props( @@ -455,7 +467,7 @@ pub enum StationpediaPrefab { )] PortableComposter = -1958705204i32, #[strum(serialize = "CartridgeGPS")] - #[strum(props(name = "GPS", desc = "", value = "-1957063345"))] + #[strum(props(name = "Cartridge (GPS)", desc = "", value = "-1957063345"))] CartridgeGps = -1957063345i32, #[strum(serialize = "StructureConsoleLED1x3")] #[strum( @@ -545,7 +557,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Sorter Motherboard", - desc = "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass.", + desc = "Motherboards are connected to Computer (Modern)s to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass.", value = "-1908268220" ) )] @@ -725,11 +737,20 @@ pub enum StationpediaPrefab { #[strum(props(name = "Kit (Wall)", desc = "", value = "-1826855889"))] ItemKitWall = -1826855889i32, #[strum(serialize = "ItemWreckageAirConditioner1")] - #[strum(props(name = "Wreckage Air Conditioner", desc = "", value = "-1826023284"))] + #[strum(props(name = "Wreckage", desc = "", value = "-1826023284"))] ItemWreckageAirConditioner1 = -1826023284i32, #[strum(serialize = "ItemKitStirlingEngine")] #[strum(props(name = "Kit (Stirling Engine)", desc = "", value = "-1821571150"))] ItemKitStirlingEngine = -1821571150i32, + #[strum(serialize = "StructureRoboticArmDock")] + #[strum( + props( + name = "LArRE Dock", + desc = "The Linear Articulated Rail Entity or LArRE can be used to plant, harvest and fertilize plants in plant trays. It can also grab items from a Chute Export Bin and drop them in a Chute Import Bin. LArRE can interact with plant trays or chute bins built under a linear rail station or built under its dock.", + value = "-1818718810" + ) + )] + StructureRoboticArmDock = -1818718810i32, #[strum(serialize = "StructureGasUmbilicalMale")] #[strum( props( @@ -822,6 +843,9 @@ pub enum StationpediaPrefab { ) )] LandingpadLiquidConnectorOutwardPiece = -1788929869i32, + #[strum(serialize = "StructureRoboticArmRailStraight")] + #[strum(props(name = "Linear Rail Straight", desc = "", value = "-1785844184"))] + StructureRoboticArmRailStraight = -1785844184i32, #[strum(serialize = "StructurePipeCorner")] #[strum( props( @@ -846,7 +870,7 @@ pub enum StationpediaPrefab { #[strum(serialize = "CartridgeOreScanner")] #[strum( props( - name = "Ore Scanner", + name = "Cartridge (Ore Scanner)", desc = "When inserted into a Handheld Tablet the scanner will display minerals hidden underground on the tablet.", value = "-1768732546" ) @@ -1064,7 +1088,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Appliance Desk Lamp Left", desc = "", value = "-1683849799"))] ApplianceDeskLampLeft = -1683849799i32, #[strum(serialize = "ItemWreckageWallCooler1")] - #[strum(props(name = "Wreckage Wall Cooler", desc = "", value = "-1682930158"))] + #[strum(props(name = "Wreckage", desc = "", value = "-1682930158"))] ItemWreckageWallCooler1 = -1682930158i32, #[strum(serialize = "StructureGasUmbilicalFemale")] #[strum(props(name = "Umbilical Socket (Gas)", desc = "", value = "-1680477930"))] @@ -1121,9 +1145,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Astroloy Sheets", desc = "", value = "-1662476145"))] ItemAstroloySheets = -1662476145i32, #[strum(serialize = "ItemWreckageTurbineGenerator1")] - #[strum( - props(name = "Wreckage Turbine Generator", desc = "", value = "-1662394403") - )] + #[strum(props(name = "Wreckage", desc = "", value = "-1662394403"))] ItemWreckageTurbineGenerator1 = -1662394403i32, #[strum(serialize = "ItemMiningBackPack")] #[strum(props(name = "Mining Backpack", desc = "", value = "-1650383245"))] @@ -1248,7 +1270,7 @@ pub enum StationpediaPrefab { #[strum(serialize = "CartridgeAtmosAnalyser")] #[strum( props( - name = "Atmos Analyzer", + name = "Cartridge (Atmos Analyzer)", desc = "The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by ExMin for use with the OreCore Handheld Tablet. It displays the pressure, concentration and molar quantity of gas in rooms, tanks, or pipe networks.", value = "-1550278665" ) @@ -1391,7 +1413,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Sleeper", desc = "", value = "-1467449329"))] StructureSleeper = -1467449329i32, #[strum(serialize = "CartridgeElectronicReader")] - #[strum(props(name = "eReader", desc = "", value = "-1462180176"))] + #[strum(props(name = "Cartridge (eReader)", desc = "", value = "-1462180176"))] CartridgeElectronicReader = -1462180176i32, #[strum(serialize = "StructurePictureFrameThickMountPortraitLarge")] #[strum( @@ -1622,6 +1644,9 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureLogicWriter")] #[strum(props(name = "Logic Writer", desc = "", value = "-1326019434"))] StructureLogicWriter = -1326019434i32, + #[strum(serialize = "StructureRoboticArmRailCorner")] + #[strum(props(name = "Linear Rail Corner", desc = "", value = "-1323992709"))] + StructureRoboticArmRailCorner = -1323992709i32, #[strum(serialize = "StructureLogicWriterSwitch")] #[strum(props(name = "Logic Writer Switch", desc = "", value = "-1321250424"))] StructureLogicWriterSwitch = -1321250424i32, @@ -1798,6 +1823,9 @@ pub enum StationpediaPrefab { ) )] StructureLargeDirectHeatExchangeGastoGas = -1230658883i32, + #[strum(serialize = "ItemKitRoboticArm")] + #[strum(props(name = "Kit (LArRE)", desc = "", value = "-1228287398"))] + ItemKitRoboticArm = -1228287398i32, #[strum(serialize = "ItemSensorProcessingUnitOreScanner")] #[strum( props( @@ -1823,13 +1851,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Landingpad Liquid Input", desc = "", value = "-1216167727"))] LandingpadLiquidConnectorInwardPiece = -1216167727i32, #[strum(serialize = "ItemWreckageStructureWeatherStation008")] - #[strum( - props( - name = "Wreckage Structure Weather Station", - desc = "", - value = "-1214467897" - ) - )] + #[strum(props(name = "Wreckage", desc = "", value = "-1214467897"))] ItemWreckageStructureWeatherStation008 = -1214467897i32, #[strum(serialize = "ItemPlantThermogenic_Creative")] #[strum( @@ -2025,7 +2047,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Active Vent", - desc = "The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: 'Outward' sets it to pump gas into a space until pressure is reached; 'Inward' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward ...", + desc = "The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: 'Outward' sets it to pump gas into a space until pressure is reached; 'Inward' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward...", value = "-1129453144" ) )] @@ -2057,7 +2079,7 @@ pub enum StationpediaPrefab { #[strum(serialize = "CartridgeMedicalAnalyser")] #[strum( props( - name = "Medical Analyzer", + name = "Cartridge (Medical Analyzer)", desc = "When added to the OreCore Handheld Tablet, Asura's's ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users.", value = "-1116110181" ) @@ -2076,13 +2098,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Cake", desc = "", value = "-1108244510"))] ItemPlainCake = -1108244510i32, #[strum(serialize = "ItemWreckageStructureWeatherStation004")] - #[strum( - props( - name = "Wreckage Structure Weather Station", - desc = "", - value = "-1104478996" - ) - )] + #[strum(props(name = "Wreckage", desc = "", value = "-1104478996"))] ItemWreckageStructureWeatherStation004 = -1104478996i32, #[strum(serialize = "StructureCableFuse1k")] #[strum(props(name = "Fuse (1kW)", desc = "", value = "-1103727120"))] @@ -2301,6 +2317,9 @@ pub enum StationpediaPrefab { #[strum(serialize = "ItemDynamicScrubber")] #[strum(props(name = "Kit (Portable Scrubber)", desc = "", value = "-971920158"))] ItemDynamicScrubber = -971920158i32, + #[strum(serialize = "ItemWaterBottlePackage")] + #[strum(props(name = "Water Bottle Package", desc = "", value = "-971586619"))] + ItemWaterBottlePackage = -971586619i32, #[strum(serialize = "StructureCondensationValve")] #[strum( props( @@ -2337,7 +2356,7 @@ pub enum StationpediaPrefab { )] ItemKitRocketTransformerSmall = -932335800i32, #[strum(serialize = "CartridgeConfiguration")] - #[strum(props(name = "Configuration", desc = "", value = "-932136011"))] + #[strum(props(name = "Cartridge (Configuration)", desc = "", value = "-932136011"))] CartridgeConfiguration = -932136011i32, #[strum(serialize = "ItemSilverIngot")] #[strum(props(name = "Ingot (Silver)", desc = "", value = "-929742000"))] @@ -2353,13 +2372,7 @@ pub enum StationpediaPrefab { )] StructureSmallTableRectangleSingle = -924678969i32, #[strum(serialize = "ItemWreckageStructureWeatherStation005")] - #[strum( - props( - name = "Wreckage Structure Weather Station", - desc = "", - value = "-919745414" - ) - )] + #[strum(props(name = "Wreckage", desc = "", value = "-919745414"))] ItemWreckageStructureWeatherStation005 = -919745414i32, #[strum(serialize = "ItemSilverOre")] #[strum( @@ -2465,7 +2478,7 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureChuteBin")] #[strum( props( - name = "Chute Bin", + name = "Chute Import Bin", desc = "The Stationeer's goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nLike most Recurso-designed systems, chute bins are simple and robust powered items, allowing items to be manually passed into chute networks by pulling a lever. They can also be programmed with logic to operate automatically, although full automation requires the use items such as a SDB Hopper.", value = "-850484480" ) @@ -2493,13 +2506,7 @@ pub enum StationpediaPrefab { )] ItemFlashlight = -838472102i32, #[strum(serialize = "ItemWreckageStructureWeatherStation001")] - #[strum( - props( - name = "Wreckage Structure Weather Station", - desc = "", - value = "-834664349" - ) - )] + #[strum(props(name = "Wreckage", desc = "", value = "-834664349"))] ItemWreckageStructureWeatherStation001 = -834664349i32, #[strum(serialize = "ItemBiomass")] #[strum( @@ -2650,15 +2657,6 @@ pub enum StationpediaPrefab { ) )] StructurePowerConnector = -782951720i32, - #[strum(serialize = "StructureLiquidPipeOneWayValve")] - #[strum( - props( - name = "One Way Valve (Liquid)", - desc = "The one way valve moves liquid in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure..", - value = "-782453061" - ) - )] - StructureLiquidPipeOneWayValve = -782453061i32, #[strum(serialize = "StructureWallLargePanelArrow")] #[strum(props(name = "Wall (Large Panel Arrow)", desc = "", value = "-776581573"))] StructureWallLargePanelArrow = -776581573i32, @@ -2695,6 +2693,9 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureWaterBottleFillerPowered")] #[strum(props(name = "Waterbottle Filler", desc = "", value = "-756587791"))] StructureWaterBottleFillerPowered = -756587791i32, + #[strum(serialize = "ItemKitRobotArmDoor")] + #[strum(props(name = "Kit (Linear Rail Door)", desc = "", value = "-753675589"))] + ItemKitRobotArmDoor = -753675589i32, #[strum(serialize = "AppliancePackagingMachine")] #[strum( props( @@ -2791,7 +2792,7 @@ pub enum StationpediaPrefab { )] StructureLogicTransmitter = -693235651i32, #[strum(serialize = "StructureValve")] - #[strum(props(name = "Valve", desc = "", value = "-692036078"))] + #[strum(props(name = "Valve (Gas)", desc = "", value = "-692036078"))] StructureValve = -692036078i32, #[strum(serialize = "StructureCompositeWindowIron")] #[strum(props(name = "Iron Window", desc = "", value = "-688284639"))] @@ -2919,8 +2920,8 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureComputer")] #[strum( props( - name = "Computer", - desc = "In some ways a relic, the 'Chonk R1' was designed by severely conflicted Norsec technicians, who needed a unit that could operate with a wide range of motherboards, while also enduring the worst a new Cadet could throw at it.\nThe result is a machine described by some as 'the only PC likely to survive our collision with a black hole', while other, less appreciative users regard it as sharing most of its technological DNA with a cheese grater.\nCompatible motherboards:\n- Logic Motherboard\n- Manufacturing Motherboard\n- Sorter Motherboard\n- Communications Motherboard\n- IC Editor Motherboard", + name = "Computer (Modern)", + desc = "This unit operates with a wide range of motherboards.", value = "-626563514" ) )] @@ -3082,6 +3083,9 @@ pub enum StationpediaPrefab { ) )] ItemEggCarton = -524289310i32, + #[strum(serialize = "StructurePipeLiquidOneWayValveLever")] + #[strum(props(name = "One Way Valve (Liquid)", desc = "", value = "-523832822"))] + StructurePipeLiquidOneWayValveLever = -523832822i32, #[strum(serialize = "StructureWaterDigitalValve")] #[strum(props(name = "Liquid Digital Valve", desc = "", value = "-517628750"))] StructureWaterDigitalValve = -517628750i32, @@ -3127,6 +3131,9 @@ pub enum StationpediaPrefab { #[strum(serialize = "ItemIronSheets")] #[strum(props(name = "Iron Sheets", desc = "", value = "-487378546"))] ItemIronSheets = -487378546i32, + #[strum(serialize = "StructureReinforcedWall")] + #[strum(props(name = "Reinforced Wall", desc = "", value = "-475746988"))] + StructureReinforcedWall = -475746988i32, #[strum(serialize = "ItemGasCanisterVolatiles")] #[strum(props(name = "Canister (Volatiles)", desc = "", value = "-472094806"))] ItemGasCanisterVolatiles = -472094806i32, @@ -3190,6 +3197,9 @@ pub enum StationpediaPrefab { ) )] StructureVendingMachine = -443130773i32, + #[strum(serialize = "ItemKitLinearRail")] + #[strum(props(name = "Kit (Linear Rail)", desc = "", value = "-441759975"))] + ItemKitLinearRail = -441759975i32, #[strum(serialize = "StructurePipeHeater")] #[strum( props( @@ -3229,6 +3239,15 @@ pub enum StationpediaPrefab { ) )] CircuitboardCameraDisplay = -412104504i32, + #[strum(serialize = "StructureComputerUpright")] + #[strum( + props( + name = "Computer (Retro)", + desc = "This unit operates with a wide range of motherboards.", + value = "-405593895" + ) + )] + StructureComputerUpright = -405593895i32, #[strum(serialize = "ItemCopperIngot")] #[strum( props( @@ -3238,6 +3257,9 @@ pub enum StationpediaPrefab { ) )] ItemCopperIngot = -404336834i32, + #[strum(serialize = "ItemCerealBarBox")] + #[strum(props(name = "Cereal Bar Box", desc = "", value = "-401648353"))] + ItemCerealBarBox = -401648353i32, #[strum(serialize = "ReagentColorOrange")] #[strum(props(name = "Color Dye (Orange)", desc = "", value = "-400696159"))] ReagentColorOrange = -400696159i32, @@ -3359,7 +3381,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Communications Motherboard", - desc = "When placed in a Computer and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land.", + desc = "When placed in a Computer (Modern) and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land.", value = "-337075633" ) )] @@ -3379,7 +3401,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Portable Gas Tank (CO2)", - desc = "Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or ... boom. Once it's full, you can refill a Canister (CO2) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere ... of sorts.", + desc = "Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or... boom. Once it's full, you can refill a Canister (CO2) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere... of sorts.", value = "-322413931" ) )] @@ -3415,7 +3437,7 @@ pub enum StationpediaPrefab { )] ElectronicPrinterMod = -311170652i32, #[strum(serialize = "ItemWreckageHydroponicsTray1")] - #[strum(props(name = "Wreckage Hydroponics Tray", desc = "", value = "-310178617"))] + #[strum(props(name = "Wreckage", desc = "", value = "-310178617"))] ItemWreckageHydroponicsTray1 = -310178617i32, #[strum(serialize = "ItemKitRocketCelestialTracker")] #[strum( @@ -3449,6 +3471,9 @@ pub enum StationpediaPrefab { ) )] StructureLiquidPipeHeater = -287495560i32, + #[strum(serialize = "StructureRoboticArmRailInnerCorner")] + #[strum(props(name = "Linear Rail Inner Corner", desc = "", value = "-267108827"))] + StructureRoboticArmRailInnerCorner = -267108827i32, #[strum(serialize = "ItemChocolateCake")] #[strum(props(name = "Chocolate Cake", desc = "", value = "-261575861"))] ItemChocolateCake = -261575861i32, @@ -3456,7 +3481,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Stirling Engine", - desc = "Harnessing an ancient thermal exploit, the Recurso 'Libra' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room's ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results.", + desc = "Harnessing an ancient thermal exploit, the Recurso 'Libra' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room's ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have... sub-optimal results.", value = "-260316435" ) )] @@ -3491,7 +3516,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Handheld Tablet", - desc = "The Xigo handheld 'Padi' tablet is an all-purpose data platform, provided as standard issue to all Stationeers. A dynamic multi-tool that accepts a range of cartridges, the Padi becomes an Atmos Analyzer or Tracker, Medical Analyzer, Ore Scanner, eReader, and various other functions.", + 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 Cartridge (Atmos Analyzer) or Cartridge (Tracker), Cartridge (Medical Analyzer), Cartridge (Ore Scanner), Cartridge (eReader), and various other functions.", value = "-229808600" ) )] @@ -3575,7 +3600,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "IC Editor Motherboard", - desc = "When placed in a Computer, the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing.", + desc = "When placed in a Computer (Modern), the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing.", value = "-161107071" ) )] @@ -3707,6 +3732,9 @@ pub enum StationpediaPrefab { props(name = "Kitchen Table (Simple Short)", desc = "", value = "-78099334") )] KitchenTableSimpleShort = -78099334i32, + #[strum(serialize = "ItemCerealBarBag")] + #[strum(props(name = "Cereal Bar Bag", desc = "", value = "-75205276"))] + ItemCerealBarBag = -75205276i32, #[strum(serialize = "ImGuiCircuitboardAirlockControl")] #[strum(props(name = "Airlock (Experimental)", desc = "", value = "-73796547"))] ImGuiCircuitboardAirlockControl = -73796547i32, @@ -3785,6 +3813,9 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureWallPaddedWindowThin")] #[strum(props(name = "Wall (Padded Window Thin)", desc = "", value = "-37302931"))] StructureWallPaddedWindowThin = -37302931i32, + #[strum(serialize = "StructureRoboticArmRailOuterCorner")] + #[strum(props(name = "Linear Rail Outer Corner", desc = "", value = "-33470826"))] + StructureRoboticArmRailOuterCorner = -33470826i32, #[strum(serialize = "StructureInsulatedTankConnector")] #[strum(props(name = "Insulated Tank Connector", desc = "", value = "-31273349"))] StructureInsulatedTankConnector = -31273349i32, @@ -3835,12 +3866,10 @@ pub enum StationpediaPrefab { )] ItemPureIcePollutant = -1755356i32, #[strum(serialize = "ItemWreckageLargeExtendableRadiator01")] - #[strum( - props(name = "Wreckage Large Extendable Radiator", desc = "", value = "-997763") - )] + #[strum(props(name = "Wreckage", desc = "", value = "-997763"))] ItemWreckageLargeExtendableRadiator01 = -997763i32, #[strum(serialize = "StructureSingleBed")] - #[strum(props(name = "Single Bed", desc = "Description coming.", value = "-492611"))] + #[strum(props(name = "Single Bed", desc = "", value = "-492611"))] StructureSingleBed = -492611i32, #[strum(serialize = "StructureCableCorner3HBurnt")] #[strum( @@ -3971,7 +4000,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Canister", desc = "", value = "42280099"))] ItemGasCanisterEmpty = 42280099i32, #[strum(serialize = "ItemWreckageWallCooler2")] - #[strum(props(name = "Wreckage Wall Cooler", desc = "", value = "45733800"))] + #[strum(props(name = "Wreckage", desc = "", value = "45733800"))] ItemWreckageWallCooler2 = 45733800i32, #[strum(serialize = "ItemPumpkinPie")] #[strum(props(name = "Pumpkin Pie", desc = "", value = "62768076"))] @@ -3992,13 +4021,13 @@ pub enum StationpediaPrefab { #[strum(props(name = "Kit (Docking Port)", desc = "", value = "77421200"))] ItemKitDockingPort = 77421200i32, #[strum(serialize = "CartridgeTracker")] - #[strum(props(name = "Tracker", desc = "", value = "81488783"))] + #[strum(props(name = "Cartridge (Tracker)", desc = "", value = "81488783"))] CartridgeTracker = 81488783i32, #[strum(serialize = "ToyLuna")] #[strum(props(name = "Toy Luna", desc = "", value = "94730034"))] ToyLuna = 94730034i32, #[strum(serialize = "ItemWreckageTurbineGenerator2")] - #[strum(props(name = "Wreckage Turbine Generator", desc = "", value = "98602599"))] + #[strum(props(name = "Wreckage", desc = "", value = "98602599"))] ItemWreckageTurbineGenerator2 = 98602599i32, #[strum(serialize = "StructurePowerUmbilicalFemale")] #[strum(props(name = "Umbilical Socket (Power)", desc = "", value = "101488029"))] @@ -4165,7 +4194,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Kit (Door)", desc = "", value = "168615924"))] ItemKitDoor = 168615924i32, #[strum(serialize = "ItemWreckageAirConditioner2")] - #[strum(props(name = "Wreckage Air Conditioner", desc = "", value = "169888054"))] + #[strum(props(name = "Wreckage", desc = "", value = "169888054"))] ItemWreckageAirConditioner2 = 169888054i32, #[strum(serialize = "Landingpad_GasCylinderTankPiece")] #[strum( @@ -4312,7 +4341,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Chocolate Bar", desc = "", value = "234601764"))] ItemChocolateBar = 234601764i32, #[strum(serialize = "ItemExplosive")] - #[strum(props(name = "Remote Explosive", desc = "", value = "235361649"))] + #[strum(props(name = "Demolition Charge", desc = "", value = "235361649"))] ItemExplosive = 235361649i32, #[strum(serialize = "StructureConsole")] #[strum( @@ -4326,8 +4355,8 @@ pub enum StationpediaPrefab { #[strum(serialize = "ItemPassiveVent")] #[strum( props( - name = "Passive Vent", - desc = "This kit creates a Passive Vent among other variants.", + name = "Kit (Passive Vent)", + desc = "This kit creates a Kit (Passive Vent) among other variants.", value = "238631271" ) )] @@ -4620,6 +4649,9 @@ pub enum StationpediaPrefab { ) )] StructurePressureFedLiquidEngine = 379750958i32, + #[strum(serialize = "ItemMiningPackage")] + #[strum(props(name = "Mining Supplies Package", desc = "", value = "384478267"))] + ItemMiningPackage = 384478267i32, #[strum(serialize = "ItemPureIceNitrous")] #[strum( props( @@ -4644,7 +4676,7 @@ pub enum StationpediaPrefab { )] ItemMkiiDuctTape = 388774906i32, #[strum(serialize = "ItemWreckageStructureRTG1")] - #[strum(props(name = "Wreckage Structure RTG", desc = "", value = "391453348"))] + #[strum(props(name = "Wreckage", desc = "", value = "391453348"))] ItemWreckageStructureRtg1 = 391453348i32, #[strum(serialize = "ItemPipeLabel")] #[strum( @@ -4723,7 +4755,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Pipe Analyzer", - desc = "Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {ExMin engineer, the pipe analyzer is essentially a more advanced version of the Pipe Meter.\nDisplaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a Console or Computer via a {Logic system.", + 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 (Modern) via a {Logic system.", value = "435685051" ) )] @@ -4735,7 +4767,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Medium Satellite Dish", - desc = "This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", + desc = "This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer (Modern) containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", value = "439026183" ) )] @@ -4855,7 +4887,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Logic Motherboard", - desc = "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items.", + desc = "Motherboards are connected to Computer (Modern)s to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items.", value = "502555944" ) )] @@ -4863,6 +4895,11 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureStairwellBackLeft")] #[strum(props(name = "Stairwell (Back Left)", desc = "", value = "505924160"))] StructureStairwellBackLeft = 505924160i32, + #[strum(serialize = "ItemResidentialPackage")] + #[strum( + props(name = "Residential Supplies Package", desc = "", value = "509629504") + )] + ItemResidentialPackage = 509629504i32, #[strum(serialize = "ItemKitAccessBridge")] #[strum(props(name = "Kit (Access Bridge)", desc = "", value = "513258369"))] ItemKitAccessBridge = 513258369i32, @@ -4903,13 +4940,7 @@ pub enum StationpediaPrefab { )] ItemPureIceLiquidOxygen = 541621589i32, #[strum(serialize = "ItemWreckageStructureWeatherStation003")] - #[strum( - props( - name = "Wreckage Structure Weather Station", - desc = "", - value = "542009679" - ) - )] + #[strum(props(name = "Wreckage", desc = "", value = "542009679"))] ItemWreckageStructureWeatherStation003 = 542009679i32, #[strum(serialize = "StructureInLineTankLiquid1x1")] #[strum( @@ -5056,13 +5087,7 @@ pub enum StationpediaPrefab { )] ItemRocketMiningDrillHeadHighSpeedIce = 653461728i32, #[strum(serialize = "ItemWreckageStructureWeatherStation007")] - #[strum( - props( - name = "Wreckage Structure Weather Station", - desc = "", - value = "656649558" - ) - )] + #[strum(props(name = "Wreckage", desc = "", value = "656649558"))] ItemWreckageStructureWeatherStation007 = 656649558i32, #[strum(serialize = "ItemRice")] #[strum( @@ -5092,7 +5117,9 @@ pub enum StationpediaPrefab { #[strum(props(name = "Space Ice", desc = "", value = "675686937"))] ItemSpaceIce = 675686937i32, #[strum(serialize = "ItemRemoteDetonator")] - #[strum(props(name = "Remote Detonator", desc = "", value = "678483886"))] + #[strum( + props(name = "Remote Detonator", desc = "0.Mode0\n1.Mode1", value = "678483886") + )] ItemRemoteDetonator = 678483886i32, #[strum(serialize = "ItemCocoaTree")] #[strum(props(name = "Cocoa", desc = "", value = "680051921"))] @@ -5128,9 +5155,7 @@ pub enum StationpediaPrefab { )] StructureCentrifuge = 690945935i32, #[strum(serialize = "StructureBlockBed")] - #[strum( - props(name = "Block Bed", desc = "Description coming.", value = "697908419") - )] + #[strum(props(name = "Block Bed", desc = "", value = "697908419"))] StructureBlockBed = 697908419i32, #[strum(serialize = "ItemBatteryCell")] #[strum( @@ -5221,6 +5246,15 @@ pub enum StationpediaPrefab { #[strum(serialize = "WeaponEnergy")] #[strum(props(name = "Weapon Energy", desc = "", value = "789494694"))] WeaponEnergy = 789494694i32, + #[strum(serialize = "StructureCompositeWindowShutterConnector")] + #[strum( + props( + name = "Composite Window Shutter Connector", + desc = "", + value = "791407452" + ) + )] + StructureCompositeWindowShutterConnector = 791407452i32, #[strum(serialize = "ItemCerealBar")] #[strum( props( @@ -5249,7 +5283,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Kit (Pipe Valve)", - desc = "This kit creates a Valve.", + desc = "This kit creates a Valve (Gas).", value = "799323450" ) )] @@ -5349,6 +5383,9 @@ pub enum StationpediaPrefab { ) )] StructureCompositeCladdingAngledCornerLong = 850558385i32, + #[strum(serialize = "ItemEmergencySuppliesBox")] + #[strum(props(name = "Emergency Supplies", desc = "", value = "851103794"))] + ItemEmergencySuppliesBox = 851103794i32, #[strum(serialize = "ItemPlantEndothermic_Genepool1")] #[strum( props( @@ -5401,7 +5438,7 @@ pub enum StationpediaPrefab { )] ItemRoadFlare = 871811564i32, #[strum(serialize = "CartridgeGuide")] - #[strum(props(name = "Guide", desc = "", value = "872720793"))] + #[strum(props(name = "Cartridge (Guide)", desc = "", value = "872720793"))] CartridgeGuide = 872720793i32, #[strum(serialize = "StructureLogicSorter")] #[strum( @@ -5841,7 +5878,7 @@ pub enum StationpediaPrefab { )] LandingpadCrossPiece = 1101296153i32, #[strum(serialize = "CartridgePlantAnalyser")] - #[strum(props(name = "Cartridge Plant Analyser", desc = "", value = "1101328282"))] + #[strum(props(name = "Cartridge (Plant Analyser)", desc = "", value = "1101328282"))] CartridgePlantAnalyser = 1101328282i32, #[strum(serialize = "ItemSiliconOre")] #[strum( @@ -6053,7 +6090,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Ice (Volatiles)", - desc = "An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity's sake, these are often displayed as H2 by devices like the Atmos Analyzer.\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n", + desc = "An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity's sake, these are often displayed as H2 by devices like the Cartridge (Atmos Analyzer).\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n", value = "1253102035" ) )] @@ -6131,6 +6168,9 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureWallIron")] #[strum(props(name = "Iron Wall (Type 1)", desc = "", value = "1287324802"))] StructureWallIron = 1287324802i32, + #[strum(serialize = "StructurePipeOneWayValveLever")] + #[strum(props(name = "One Way Valve (Gas)", desc = "", value = "1289581593"))] + StructurePipeOneWayValveLever = 1289581593i32, #[strum(serialize = "ItemSprayGun")] #[strum( props( @@ -6243,13 +6283,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Graph Display", desc = "", value = "1344368806"))] CircuitboardGraphDisplay = 1344368806i32, #[strum(serialize = "ItemWreckageStructureWeatherStation006")] - #[strum( - props( - name = "Wreckage Structure Weather Station", - desc = "", - value = "1344576960" - ) - )] + #[strum(props(name = "Wreckage", desc = "", value = "1344576960"))] ItemWreckageStructureWeatherStation006 = 1344576960i32, #[strum(serialize = "ItemCookedCorn")] #[strum( @@ -6384,13 +6418,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Water Bottle Filler Bottom", desc = "", value = "1433754995"))] StructureWaterBottleFillerBottom = 1433754995i32, #[strum(serialize = "StructureLightRoundSmall")] - #[strum( - props( - name = "Light Round (Small)", - desc = "Description coming.", - value = "1436121888" - ) - )] + #[strum(props(name = "Light Round (Small)", desc = "", value = "1436121888"))] StructureLightRoundSmall = 1436121888i32, #[strum(serialize = "ItemRocketMiningDrillHeadHighSpeedMineral")] #[strum( @@ -6432,17 +6460,14 @@ pub enum StationpediaPrefab { props(name = "Kit (Medium Radiator Liquid)", desc = "", value = "1453961898") )] ItemKitPassiveLargeRadiatorLiquid = 1453961898i32, + #[strum(serialize = "ItemPortablesPackage")] + #[strum(props(name = "Portables Package", desc = "", value = "1459105919"))] + ItemPortablesPackage = 1459105919i32, #[strum(serialize = "ItemKitReinforcedWindows")] - #[strum(props(name = "Kit (Reinforced Windows)", desc = "", value = "1459985302"))] + #[strum(props(name = "Kit (Reinforced Walls)", desc = "", value = "1459985302"))] ItemKitReinforcedWindows = 1459985302i32, #[strum(serialize = "ItemWreckageStructureWeatherStation002")] - #[strum( - props( - name = "Wreckage Structure Weather Station", - desc = "", - value = "1464424921" - ) - )] + #[strum(props(name = "Wreckage", desc = "", value = "1464424921"))] ItemWreckageStructureWeatherStation002 = 1464424921i32, #[strum(serialize = "StructureHydroponicsTray")] #[strum( @@ -6477,6 +6502,12 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureTorpedoRack")] #[strum(props(name = "Torpedo Rack", desc = "", value = "1473807953"))] StructureTorpedoRack = 1473807953i32, + #[strum(serialize = "ItemWaterBottleBag")] + #[strum(props(name = "Water Bottle Bag", desc = "", value = "1476318823"))] + ItemWaterBottleBag = 1476318823i32, + #[strum(serialize = "ItemInsulatedCanisterPackage")] + #[strum(props(name = "Insulated Canister Package", desc = "", value = "1485675617"))] + ItemInsulatedCanisterPackage = 1485675617i32, #[strum(serialize = "StructureWallIron02")] #[strum(props(name = "Iron Wall (Type 2)", desc = "", value = "1485834215"))] StructureWallIron02 = 1485834215i32, @@ -6496,9 +6527,7 @@ pub enum StationpediaPrefab { )] ItemSprayCanRed = 1514393921i32, #[strum(serialize = "StructureLightRound")] - #[strum( - props(name = "Light Round", desc = "Description coming.", value = "1514476632") - )] + #[strum(props(name = "Light Round", desc = "", value = "1514476632"))] StructureLightRound = 1514476632i32, #[strum(serialize = "Fertilizer")] #[strum( @@ -6590,15 +6619,9 @@ pub enum StationpediaPrefab { #[strum(serialize = "ItemHastelloyIngot")] #[strum(props(name = "Ingot (Hastelloy)", desc = "", value = "1579842814"))] ItemHastelloyIngot = 1579842814i32, - #[strum(serialize = "StructurePipeOneWayValve")] - #[strum( - props( - name = "One Way Valve (Gas)", - desc = "The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.\n", - value = "1580412404" - ) - )] - StructurePipeOneWayValve = 1580412404i32, + #[strum(serialize = "StructureCompositeWindowShutter")] + #[strum(props(name = "Composite Window Shutter", desc = "", value = "1580592998"))] + StructureCompositeWindowShutter = 1580592998i32, #[strum(serialize = "StructureStackerReverse")] #[strum( props( @@ -6624,13 +6647,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Wall (Padded Arch)", desc = "", value = "1590330637"))] StructureWallPaddedArch = 1590330637i32, #[strum(serialize = "StructureLightRoundAngled")] - #[strum( - props( - name = "Light Round (Angled)", - desc = "Description coming.", - value = "1592905386" - ) - )] + #[strum(props(name = "Light Round (Angled)", desc = "", value = "1592905386"))] StructureLightRoundAngled = 1592905386i32, #[strum(serialize = "StructureWallGeometryT")] #[strum(props(name = "Wall (Geometry T)", desc = "", value = "1602758612"))] @@ -6644,7 +6661,7 @@ pub enum StationpediaPrefab { #[strum(serialize = "CartridgeNetworkAnalyser")] #[strum( props( - name = "Network Analyzer", + name = "Cartridge (Network Analyzer)", desc = "A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied Sinotai design, it's used in conjunction with the OreCore Handheld Tablet.", value = "1606989119" ) @@ -6750,13 +6767,7 @@ pub enum StationpediaPrefab { #[strum(props(name = "Emergency Tool Belt", desc = "", value = "1661941301"))] ItemEmergencyToolBelt = 1661941301i32, #[strum(serialize = "StructureEmergencyButton")] - #[strum( - props( - name = "Important Button", - desc = "Description coming.", - value = "1668452680" - ) - )] + #[strum(props(name = "Important Button", desc = "", value = "1668452680"))] StructureEmergencyButton = 1668452680i32, #[strum(serialize = "ItemKitAutoMinerSmall")] #[strum(props(name = "Kit (Autominer Small)", desc = "", value = "1668815415"))] @@ -6881,7 +6892,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Advanced Tablet", - desc = "The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Atmos Analyzer, Tracker, Medical Analyzer, Ore Scanner, eReader, and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter", + desc = "The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Cartridge (Atmos Analyzer), Cartridge (Tracker), Cartridge (Medical Analyzer), Cartridge (Ore Scanner), Cartridge (eReader), and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter", value = "1722785341" ) )] @@ -6919,7 +6930,7 @@ pub enum StationpediaPrefab { #[strum(serialize = "CartridgeOreScannerColor")] #[strum( props( - name = "Ore Scanner (Color)", + name = "Cartridge (Ore Scanner Color)", desc = "When inserted into a Handheld Tablet the scanner will display minerals hidden underground in different colors on the tablet.", value = "1738236580" ) @@ -6943,7 +6954,7 @@ pub enum StationpediaPrefab { #[strum(serialize = "ItemAreaPowerControl")] #[strum( props( - name = "Kit (Power Controller)", + name = "Kit (Area Power Controller)", desc = "This kit places a Area Power Control (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow.", value = "1757673317" ) @@ -6977,7 +6988,9 @@ pub enum StationpediaPrefab { )] StructureWallPaddedThinNoBorderCorner = 1769527556i32, #[strum(serialize = "ItemKitWindowShutter")] - #[strum(props(name = "Kit (Window Shutter)", desc = "", value = "1779979754"))] + #[strum( + props(name = "Kit (Composite Window Shutter)", desc = "", value = "1779979754") + )] ItemKitWindowShutter = 1779979754i32, #[strum(serialize = "StructureRocketManufactory")] #[strum(props(name = "Rocket Manufactory", desc = "", value = "1781051034"))] @@ -7000,6 +7013,11 @@ pub enum StationpediaPrefab { #[strum(serialize = "ItemCoffeeMug")] #[strum(props(name = "Coffee Mug", desc = "", value = "1800622698"))] ItemCoffeeMug = 1800622698i32, + #[strum(serialize = "StructureRoboticArmRailStraightStop")] + #[strum( + props(name = "Linear Rail Straight Station", desc = "", value = "1800701885") + )] + StructureRoboticArmRailStraightStop = 1800701885i32, #[strum(serialize = "StructureAngledBench")] #[strum(props(name = "Bench (Angled)", desc = "", value = "1811979158"))] StructureAngledBench = 1811979158i32, @@ -7118,7 +7136,7 @@ pub enum StationpediaPrefab { )] ItemCookedPumpkin = 1849281546i32, #[strum(serialize = "StructureLiquidValve")] - #[strum(props(name = "Liquid Valve", desc = "", value = "1849974453"))] + #[strum(props(name = "Valve (Liquid)", desc = "", value = "1849974453"))] StructureLiquidValve = 1849974453i32, #[strum(serialize = "ApplianceTabletDock")] #[strum(props(name = "Tablet Dock", desc = "", value = "1853941363"))] @@ -7167,7 +7185,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Large Satellite Dish", - desc = "This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", + desc = "This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer (Modern) containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", value = "1913391845" ) )] @@ -7217,7 +7235,7 @@ pub enum StationpediaPrefab { )] StructureInsulatedPipeLiquidCrossJunction = 1926651727i32, #[strum(serialize = "ItemWreckageTurbineGenerator3")] - #[strum(props(name = "Wreckage Turbine Generator", desc = "", value = "1927790321"))] + #[strum(props(name = "Wreckage", desc = "", value = "1927790321"))] ItemWreckageTurbineGenerator3 = 1927790321i32, #[strum(serialize = "StructurePassthroughHeatExchangerGasToLiquid")] #[strum( @@ -7336,6 +7354,9 @@ pub enum StationpediaPrefab { ) )] StructureCompositeCladdingRoundedCorner = 1951525046i32, + #[strum(serialize = "StructureChuteExportBin")] + #[strum(props(name = "Chute Export Bin", desc = "", value = "1957571043"))] + StructureChuteExportBin = 1957571043i32, #[strum(serialize = "ItemGasFilterPollutantsL")] #[strum(props(name = "Heavy Filter (Pollutants)", desc = "", value = "1959564765"))] ItemGasFilterPollutantsL = 1959564765i32, @@ -7354,8 +7375,8 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureDrinkingFountain")] #[strum( props( - name = "", - desc = "", + name = "Drinking Fountain", + desc = "The Drinking Fountain can be interacted with directly to increase hydration. It needs a Water supply.", value = "1968371847" ) )] @@ -7372,6 +7393,9 @@ pub enum StationpediaPrefab { #[strum(serialize = "ItemKitEngineMedium")] #[strum(props(name = "Kit (Engine Medium)", desc = "", value = "1969312177"))] ItemKitEngineMedium = 1969312177i32, + #[strum(serialize = "StructureRoboticArmRailCornerStop")] + #[strum(props(name = "Linear Rail Corner Station", desc = "", value = "1974053060"))] + StructureRoboticArmRailCornerStop = 1974053060i32, #[strum(serialize = "StructureWallGeometryCorner")] #[strum(props(name = "Wall (Geometry Corner)", desc = "", value = "1979212240"))] StructureWallGeometryCorner = 1979212240i32, @@ -7541,15 +7565,6 @@ pub enum StationpediaPrefab { #[strum(serialize = "StructureStairwellNoDoors")] #[strum(props(name = "Stairwell (No Doors)", desc = "", value = "2049879875"))] StructureStairwellNoDoors = 2049879875i32, - #[strum(serialize = "StructureWindowShutter")] - #[strum( - props( - name = "Window Shutter", - desc = "For those special, private moments, a window that can be closed to prying eyes. \n \nWhen closed, has the heat transfer characteristics of a basic wall. Requires power, and can be connected to logic systems.", - value = "2056377335" - ) - )] - StructureWindowShutter = 2056377335i32, #[strum(serialize = "ItemKitHydroponicStation")] #[strum(props(name = "Kit (Hydroponic Station)", desc = "", value = "2057179799"))] ItemKitHydroponicStation = 2057179799i32, @@ -7557,7 +7572,7 @@ pub enum StationpediaPrefab { #[strum( props( name = "Cable Coil (Heavy)", - desc = "Use heavy cable coil for power systems with large draws. Unlike , which can only safely conduct 5kW, heavy cables can transmit up to 100kW.", + desc = "Use heavy cable coil for power systems with large draws. Unlike Cable Coil, which can only safely conduct 5kW, heavy cables can transmit up to 100kW.", value = "2060134443" ) )] diff --git a/stationeers_data/src/enums/script.rs b/stationeers_data/src/enums/script.rs index 293729a..1f6566d 100644 --- a/stationeers_data/src/enums/script.rs +++ b/stationeers_data/src/enums/script.rs @@ -153,7 +153,7 @@ pub enum LogicSlotType { #[strum(serialize = "OccupantHash")] #[strum( props( - docs = "returns the has of the current occupant, the unique identifier of the thing", + docs = "returns the hash of the current occupant, the unique identifier of the thing", value = "2" ) )] @@ -2095,6 +2095,14 @@ pub enum LogicType { ) )] NameHash = 268u16, + #[strum(serialize = "Altitude")] + #[strum( + props( + docs = "The altitude that the rocket above the planet's surface. -1 if the rocket is in space.", + value = "269" + ) + )] + Altitude = 269u16, } impl TryFrom for LogicType { type Error = super::ParseError; diff --git a/stationeers_data/src/lib.rs b/stationeers_data/src/lib.rs index 88d5931..6e2a3dd 100644 --- a/stationeers_data/src/lib.rs +++ b/stationeers_data/src/lib.rs @@ -69,6 +69,7 @@ pub mod enums { LandingPad, LaunchPad, PowerAndData, + RoboticArmRail, #[serde(other)] #[default] None, diff --git a/stationeers_data/src/templates.rs b/stationeers_data/src/templates.rs index 8d1564c..e498615 100644 --- a/stationeers_data/src/templates.rs +++ b/stationeers_data/src/templates.rs @@ -6,7 +6,7 @@ use crate::enums::{ ConnectionRole, ConnectionType, MachineTier, MemoryAccess, Species, }; -use serde_with::{serde_as, DisplayFromStr, Map}; +use serde_with::{serde_as, DisplayFromStr}; use serde_derive::{Deserialize, Serialize}; #[cfg(feature = "tsify")] @@ -250,7 +250,7 @@ pub struct DeviceInfo { #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] #[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct ConsumerInfo { - pub consumed_resouces: Vec, + pub consumed_resources: Vec, pub processed_reagents: Vec, } @@ -353,7 +353,7 @@ pub struct InternalAtmoInfo { #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] #[cfg_attr(feature = "tsify", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))] pub struct SuitInfo { - pub hygine_reduction_multiplier: f32, + pub hygiene_reduction_multiplier: f32, pub waste_max_pressure: f32, } diff --git a/www/cspell.json b/www/cspell.json index d88329c..380c6ea 100644 --- a/www/cspell.json +++ b/www/cspell.json @@ -56,6 +56,7 @@ "codegen", "Comlink", "datapoints", + "dbutils", "Depressurising", "deviceslength", "endpos", @@ -64,12 +65,14 @@ "hardwrap", "hashables", "hstack", + "IDBP", "idxs", "infile", "jetpack", "Keybind", "labelledby", "lbns", + "leeoniya", "logicable", "LogicSlotType", "logicslottypes", @@ -97,6 +100,8 @@ "regen", "rocketstation", "rparen", + "rsbuild", + "rspack", "sapz", "sattellite", "sdns", @@ -106,6 +111,7 @@ "sgez", "sgtz", "slez", + "Slotable", "slotclass", "slotlogic", "slotlogicable", @@ -124,6 +130,9 @@ "themelist", "tokentype", "trunc", + "ufuzzy", + "VMIC", + "vstack", "whos" ], "flagWords": [], diff --git a/www/package.json b/www/package.json index 9adc17e..f3416a1 100644 --- a/www/package.json +++ b/www/package.json @@ -27,6 +27,7 @@ "@oneidentity/zstd-js": "^1.0.3", "@rsbuild/core": "^0.7.10", "@rsbuild/plugin-image-compress": "^0.7.10", + "@rsbuild/plugin-sass": "^0.7.10", "@rsbuild/plugin-type-check": "^0.7.10", "@rspack/cli": "^0.7.5", "@rspack/core": "^0.7.5", diff --git a/www/pnpm-lock.yaml b/www/pnpm-lock.yaml index a66c849..bc60e5d 100644 --- a/www/pnpm-lock.yaml +++ b/www/pnpm-lock.yaml @@ -84,6 +84,9 @@ importers: '@rsbuild/plugin-image-compress': specifier: ^0.7.10 version: 0.7.10(@rsbuild/core@0.7.10) + '@rsbuild/plugin-sass': + specifier: ^0.7.10 + version: 0.7.10(@rsbuild/core@0.7.10)(@swc/helpers@0.5.12) '@rsbuild/plugin-type-check': specifier: ^0.7.10 version: 0.7.10(@rsbuild/core@0.7.10)(@swc/helpers@0.5.12)(typescript@5.5.4) @@ -158,6 +161,9 @@ packages: resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} engines: {node: '>=6.9.0'} + '@bufbuild/protobuf@1.10.0': + resolution: {integrity: sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==} + '@ctrl/tinycolor@4.1.0': resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} engines: {node: '>=14'} @@ -363,6 +369,11 @@ packages: peerDependencies: '@rsbuild/core': ^0.7.10 + '@rsbuild/plugin-sass@0.7.10': + resolution: {integrity: sha512-gtYNH+xgxWyroG1z2wqh/l7v88CiH89HtrIs+BbEgn1CV12dQvMI3YtF4aEwS6Ogr+byomdirFLhdBy0WBCbzQ==} + peerDependencies: + '@rsbuild/core': ^0.7.10 + '@rsbuild/plugin-type-check@0.7.10': resolution: {integrity: sha512-EGNeHEZEWvABqTGt+CEtw5kQskNrg2nch4wRuAechPgmHmzU/k65EoXTMsB/ImmcdUeU2ax2kdlQOdxs6fNgoA==} peerDependencies: @@ -734,6 +745,9 @@ packages: batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -797,6 +811,9 @@ packages: resolution: {integrity: sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==} engines: {node: '>=16.20.1'} + buffer-builder@0.2.0: + resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1099,6 +1116,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -1566,6 +1587,10 @@ packages: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + lodash.deburr@4.1.0: resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} @@ -1991,6 +2016,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -2000,6 +2028,125 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sass-embedded-android-arm64@1.77.8: + resolution: {integrity: sha512-EmWHLbEx0Zo/f/lTFzMeH2Du+/I4RmSRlEnERSUKQWVp3aBSO04QDvdxfFezgQ+2Yt/ub9WMqBpma9P/8MPsLg==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [android] + hasBin: true + + sass-embedded-android-arm@1.77.8: + resolution: {integrity: sha512-GpGL7xZ7V1XpFbnflib/NWbM0euRzineK0iwoo31/ntWKAXGj03iHhGzkSiOwWSFcXgsJJi3eRA5BTmBvK5Q+w==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [android] + hasBin: true + + sass-embedded-android-ia32@1.77.8: + resolution: {integrity: sha512-+GjfJ3lDezPi4dUUyjQBxlNKXNa+XVWsExtGvVNkv1uKyaOxULJhubVo2G6QTJJU0esJdfeXf5Ca5/J0ph7+7w==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [android] + hasBin: true + + sass-embedded-android-x64@1.77.8: + resolution: {integrity: sha512-YZbFDzGe5NhaMCygShqkeCWtzjhkWxGVunc7ULR97wmxYPQLPeVyx7XFQZc84Aj0lKAJBJS4qRZeqphMqZEJsQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [android] + hasBin: true + + sass-embedded-darwin-arm64@1.77.8: + resolution: {integrity: sha512-aifgeVRNE+i43toIkDFFJc/aPLMo0PJ5s5hKb52U+oNdiJE36n65n2L8F/8z3zZRvCa6eYtFY2b7f1QXR3B0LA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [darwin] + hasBin: true + + sass-embedded-darwin-x64@1.77.8: + resolution: {integrity: sha512-/VWZQtcWIOek60Zj6Sxk6HebXA1Qyyt3sD8o5qwbTgZnKitB1iEBuNunyGoAgMNeUz2PRd6rVki6hvbas9hQ6w==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [darwin] + hasBin: true + + sass-embedded-linux-arm64@1.77.8: + resolution: {integrity: sha512-6iIOIZtBFa2YfMsHqOb3qake3C9d/zlKxjooKKnTSo+6g6z+CLTzMXe1bOfayb7yxeenElmFoK1k54kWD/40+g==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + hasBin: true + + sass-embedded-linux-arm@1.77.8: + resolution: {integrity: sha512-2edZMB6jf0whx3T0zlgH+p131kOEmWp+I4wnKj7ZMUeokiY4Up05d10hSvb0Q63lOrSjFAWu6P5/pcYUUx8arQ==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + hasBin: true + + sass-embedded-linux-ia32@1.77.8: + resolution: {integrity: sha512-63GsFFHWN5yRLTWiSef32TM/XmjhCBx1DFhoqxmj+Yc6L9Z1h0lDHjjwdG6Sp5XTz5EmsaFKjpDgnQTP9hJX3Q==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + hasBin: true + + sass-embedded-linux-musl-arm64@1.77.8: + resolution: {integrity: sha512-j8cgQxNWecYK+aH8ESFsyam/Q6G+9gg8eJegiRVpA9x8yk3ykfHC7UdQWwUcF22ZcuY4zegrjJx8k+thsgsOVA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + + sass-embedded-linux-musl-arm@1.77.8: + resolution: {integrity: sha512-nFkhSl3uu9btubm+JBW7uRglNVJ8W8dGfzVqh3fyQJKS1oyBC3vT3VOtfbT9YivXk28wXscSHpqXZwY7bUuopA==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + + sass-embedded-linux-musl-ia32@1.77.8: + resolution: {integrity: sha512-oWveMe+8TFlP8WBWPna/+Ec5TV0CE+PxEutyi0ltSruBds2zxRq9dPVOqrpPcDN9QUx50vNZC0Afgch0aQEd0g==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + + sass-embedded-linux-musl-x64@1.77.8: + resolution: {integrity: sha512-2NtRpMXHeFo9kaYxuZ+Ewwo39CE7BTS2JDfXkTjZTZqd8H+8KC53eBh516YQnn2oiqxSiKxm7a6pxbxGZGwXOQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + + sass-embedded-linux-x64@1.77.8: + resolution: {integrity: sha512-ND5qZLWUCpOn7LJfOf0gLSZUWhNIysY+7NZK1Ctq+pM6tpJky3JM5I1jSMplNxv5H3o8p80n0gSm+fcjsEFfjQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + hasBin: true + + sass-embedded-win32-arm64@1.77.8: + resolution: {integrity: sha512-7L8zT6xzEvTYj86MvUWnbkWYCNQP+74HvruLILmiPPE+TCgOjgdi750709BtppVJGGZSs40ZuN6mi/YQyGtwXg==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [win32] + hasBin: true + + sass-embedded-win32-ia32@1.77.8: + resolution: {integrity: sha512-7Buh+4bP0WyYn6XPbthkIa3M2vtcR8QIsFVg3JElVlr+8Ng19jqe0t0SwggDgbMX6AdQZC+Wj4F1BprZSok42A==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [win32] + hasBin: true + + sass-embedded-win32-x64@1.77.8: + resolution: {integrity: sha512-rZmLIx4/LLQm+4GW39sRJW0MIlDqmyV0fkRzTmhFP5i/wVC7cuj8TUubPHw18rv2rkHFfBZKZJTCkPjCS5Z+SA==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [win32] + hasBin: true + + sass-embedded@1.77.8: + resolution: {integrity: sha512-WGXA6jcaoBo5Uhw0HX/s6z/sl3zyYQ7ZOnLOJzqwpctFcFmU4L07zn51e2VSkXXFpQZFAdMZNqOGz/7h/fvcRA==} + engines: {node: '>=16.0.0'} + sass@1.77.8: resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} engines: {node: '>=14.0.0'} @@ -2313,6 +2460,9 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -2551,6 +2701,8 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 + '@bufbuild/protobuf@1.10.0': {} + '@ctrl/tinycolor@4.1.0': {} '@discoveryjs/json-ext@0.5.7': {} @@ -2754,6 +2906,16 @@ snapshots: '@rsbuild/core': 0.7.10 svgo: 3.3.2 + '@rsbuild/plugin-sass@0.7.10(@rsbuild/core@0.7.10)(@swc/helpers@0.5.12)': + dependencies: + '@rsbuild/core': 0.7.10 + '@rsbuild/shared': 0.7.10(@swc/helpers@0.5.12) + loader-utils: 2.0.4 + postcss: 8.4.41 + sass-embedded: 1.77.8 + transitivePeerDependencies: + - '@swc/helpers' + '@rsbuild/plugin-type-check@0.7.10(@rsbuild/core@0.7.10)(@swc/helpers@0.5.12)(typescript@5.5.4)': dependencies: '@rsbuild/core': 0.7.10 @@ -3259,6 +3421,8 @@ snapshots: batch@0.6.1: {} + big.js@5.2.2: {} + binary-extensions@2.3.0: {} bn.js@4.12.0: {} @@ -3357,6 +3521,8 @@ snapshots: bson@6.8.0: {} + buffer-builder@0.2.0: {} + buffer-from@1.1.2: {} buffer-xor@1.0.3: {} @@ -3683,6 +3849,8 @@ snapshots: emoji-regex@9.2.2: {} + emojis-list@3.0.0: {} + encodeurl@1.0.2: {} enhanced-resolve@5.17.1: @@ -4184,6 +4352,12 @@ snapshots: loader-runner@4.3.0: {} + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + lodash.deburr@4.1.0: {} lodash@4.17.21: {} @@ -4555,12 +4729,94 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rxjs@7.8.1: + dependencies: + tslib: 2.6.3 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} safer-buffer@2.1.2: {} + sass-embedded-android-arm64@1.77.8: + optional: true + + sass-embedded-android-arm@1.77.8: + optional: true + + sass-embedded-android-ia32@1.77.8: + optional: true + + sass-embedded-android-x64@1.77.8: + optional: true + + sass-embedded-darwin-arm64@1.77.8: + optional: true + + sass-embedded-darwin-x64@1.77.8: + optional: true + + sass-embedded-linux-arm64@1.77.8: + optional: true + + sass-embedded-linux-arm@1.77.8: + optional: true + + sass-embedded-linux-ia32@1.77.8: + optional: true + + sass-embedded-linux-musl-arm64@1.77.8: + optional: true + + sass-embedded-linux-musl-arm@1.77.8: + optional: true + + sass-embedded-linux-musl-ia32@1.77.8: + optional: true + + sass-embedded-linux-musl-x64@1.77.8: + optional: true + + sass-embedded-linux-x64@1.77.8: + optional: true + + sass-embedded-win32-arm64@1.77.8: + optional: true + + sass-embedded-win32-ia32@1.77.8: + optional: true + + sass-embedded-win32-x64@1.77.8: + optional: true + + sass-embedded@1.77.8: + dependencies: + '@bufbuild/protobuf': 1.10.0 + buffer-builder: 0.2.0 + immutable: 4.3.7 + rxjs: 7.8.1 + supports-color: 8.1.1 + varint: 6.0.0 + optionalDependencies: + sass-embedded-android-arm: 1.77.8 + sass-embedded-android-arm64: 1.77.8 + sass-embedded-android-ia32: 1.77.8 + sass-embedded-android-x64: 1.77.8 + sass-embedded-darwin-arm64: 1.77.8 + sass-embedded-darwin-x64: 1.77.8 + sass-embedded-linux-arm: 1.77.8 + sass-embedded-linux-arm64: 1.77.8 + sass-embedded-linux-ia32: 1.77.8 + sass-embedded-linux-musl-arm: 1.77.8 + sass-embedded-linux-musl-arm64: 1.77.8 + sass-embedded-linux-musl-ia32: 1.77.8 + sass-embedded-linux-musl-x64: 1.77.8 + sass-embedded-linux-x64: 1.77.8 + sass-embedded-win32-arm64: 1.77.8 + sass-embedded-win32-ia32: 1.77.8 + sass-embedded-win32-x64: 1.77.8 + sass@1.77.8: dependencies: chokidar: 3.6.0 @@ -4929,6 +5185,8 @@ snapshots: uuid@8.3.2: {} + varint@6.0.0: {} + vary@1.1.2: {} vm-browserify@1.1.2: {} diff --git a/www/rsbuild.config.ts b/www/rsbuild.config.ts index 6b91272..f4e7536 100644 --- a/www/rsbuild.config.ts +++ b/www/rsbuild.config.ts @@ -1,6 +1,7 @@ import { defineConfig } from "@rsbuild/core"; import { pluginTypeCheck } from "@rsbuild/plugin-type-check"; import { pluginImageCompress } from "@rsbuild/plugin-image-compress"; +import { pluginSass } from "@rsbuild/plugin-sass"; const rspack = require("@rspack/core"); const { CssExtractRspackPlugin } = require("@rspack/core"); @@ -72,5 +73,5 @@ export default defineConfig({ template: "./src/index.html", }, }, - plugins: [pluginTypeCheck(), pluginImageCompress()], + plugins: [pluginSass(), pluginTypeCheck(), pluginImageCompress()], }); diff --git a/www/src/scss/styles.scss b/www/src/scss/styles.scss index b78d870..78f35dc 100644 --- a/www/src/scss/styles.scss +++ b/www/src/scss/styles.scss @@ -19,19 +19,23 @@ $accordion-icon-color-dark: #dee2e6; $accordion-icon-active-color-dark: #dee2e6; $accordion-button-padding-y: 0.5rem; -// Required -@import "bootstrap/scss/variables"; -@import "bootstrap/scss/variables-dark"; -@import "bootstrap/scss/maps"; -@import "bootstrap/scss/mixins"; -@import "bootstrap/scss/utilities"; -@import "bootstrap/scss/root"; -@import "bootstrap/scss/reboot"; +// // Required +// @import "bootstrap/scss/variables"; +// @import "bootstrap/scss/variables-dark"; +// @import "bootstrap/scss/maps"; +// @import "bootstrap/scss/mixins"; +// @import "bootstrap/scss/utilities"; +// @import "bootstrap/scss/root"; +// @import "bootstrap/scss/reboot"; +// +// @import "bootstrap/scss/type"; +// // @import "bootstrap/scss/images"; +// @import "bootstrap/scss/containers"; +// @import "bootstrap/scss/grid"; + + + -@import "bootstrap/scss/type"; -// @import "bootstrap/scss/images"; -@import "bootstrap/scss/containers"; -@import "bootstrap/scss/grid"; // @import "bootstrap/scss/tables"; // @import "bootstrap/scss/forms"; // @import "bootstrap/scss/buttons"; @@ -59,11 +63,11 @@ $accordion-button-padding-y: 0.5rem; // @import "bootstrap/scss/offcanvas"; // Requires transitions // @import "bootstrap/scss/placeholders"; -// Helpers -@import "bootstrap/scss/helpers"; +// // Helpers +// @import "bootstrap/scss/helpers"; -// Utilities -@import "bootstrap/scss/utilities/api"; +// // Utilities +// @import "bootstrap/scss/utilities/api"; // Sholace theme @import "@shoelace-style/shoelace/dist/themes/dark.css"; diff --git a/www/src/ts/presets/demo.ts b/www/src/ts/presets/demo.ts index 09bc94c..6b31100 100644 --- a/www/src/ts/presets/demo.ts +++ b/www/src/ts/presets/demo.ts @@ -72,16 +72,18 @@ export const demoVMState: SessionDB.CurrentDBVmState = { id: 1, prefab: "StructureCircuitHousing", socketed_ic: 2, - slots: { - 0: { id: 2, quantity: 1 }, - }, - connections: { - 0: 1, - }, + slots: new Map([ + [0, { id: 2, quantity: 1 }], + ]), + connections: new Map([ + [0, 1], + ]), // unused, provided to make compiler happy name: undefined, prefab_hash: undefined, compile_errors: undefined, + parent_slot: undefined, + root_parent_human: undefined, damage: undefined, device_pins: undefined, reagents: undefined, @@ -106,9 +108,9 @@ export const demoVMState: SessionDB.CurrentDBVmState = { instruction_pointer: 0, yield_instruction_count: 0, state: "Start", - aliases: {}, - defines: {}, - labels: {}, + aliases: new Map(), + defines: new Map(), + labels: new Map(), registers: new Array(18).fill(0), }, @@ -117,6 +119,8 @@ export const demoVMState: SessionDB.CurrentDBVmState = { prefab_hash: undefined, compile_errors: undefined, slots: undefined, + parent_slot: undefined, + root_parent_human: undefined, damage: undefined, device_pins: undefined, connections: undefined, diff --git a/www/src/ts/session.ts b/www/src/ts/session.ts index 641e510..2fdef21 100644 --- a/www/src/ts/session.ts +++ b/www/src/ts/session.ts @@ -417,14 +417,16 @@ export namespace SessionDB { instruction_pointer: ic.ip, yield_instruction_count: ic.ic, state: ic.state as ICState, - aliases: Object.fromEntries(ic.aliases.entries()), - defines: Object.fromEntries(ic.defines.entries()), - labels: {}, + aliases: ic.aliases, + defines: ic.defines, + labels: new Map(), registers: ic.registers, }, // unused slots: undefined, + parent_slot: undefined, + root_parent_human: undefined, damage: undefined, device_pins: undefined, connections: undefined, @@ -492,7 +494,7 @@ export namespace SessionDB { id: template.id, prefab: template.prefab_name, prefab_hash: undefined, - slots: Object.fromEntries( + slots: new Map( Array.from(slotOccupantsPairs.entries()).map( ([index, [obj, quantity]]) => [ index, @@ -505,17 +507,19 @@ export namespace SessionDB { ), socketed_ic: socketedIcFn(template.id), - logic_values: Object.fromEntries( + logic_values: new Map( Object.entries(template.fields).map(([key, val]) => { - return [key, val.value]; + return [key as LogicType, val.value]; }), - ) as Record, + ), // unused memory: undefined, source_code: undefined, compile_errors: undefined, circuit: undefined, + parent_slot: undefined, + root_parent_human: undefined, damage: undefined, device_pins: undefined, connections: undefined, diff --git a/www/src/ts/utils.ts b/www/src/ts/utils.ts index 514a851..2f7b4ed 100644 --- a/www/src/ts/utils.ts +++ b/www/src/ts/utils.ts @@ -1,4 +1,5 @@ import { Ace } from "ace-builds"; +import { TransferHandler } from "comlink"; export function docReady(fn: () => void) { // see if DOM is already available @@ -92,6 +93,26 @@ export function fromJson(value: string): any { return JSON.parse(value, reviver); } +// this is a hack that *may* not be needed +type SuitableForSpecialJson = any; +export const comlinkSpecialJsonTransferHandler: TransferHandler = { + canHandle: (obj: unknown): obj is SuitableForSpecialJson => { + return typeof obj === "object" + || ( + typeof obj === "number" + && (!Number.isFinite(obj) || Number.isNaN(obj) || isZeroNegative(obj)) + ) + || typeof obj === "undefined"; + }, + serialize: (obj: SuitableForSpecialJson) => { + const sJson = toJson(obj); + return [ + sJson, + [], + ] + }, + deserialize: (obj: string) => fromJson(obj) +}; export function compareMaps(map1: Map, map2: Map): boolean { let testVal; diff --git a/www/src/ts/virtualMachine/baseDevice.ts b/www/src/ts/virtualMachine/baseDevice.ts index 88db46d..d7c4fef 100644 --- a/www/src/ts/virtualMachine/baseDevice.ts +++ b/www/src/ts/virtualMachine/baseDevice.ts @@ -21,6 +21,7 @@ import { LitElement, PropertyValueMap } from "lit"; import { computed, + signal, } from '@lit-labs/preact-signals'; import type { Signal } from '@lit-labs/preact-signals'; @@ -138,7 +139,7 @@ export class ComputedObjectSignals { return slotsTemplate.map((template, index) => { const fieldEntryInfos = Array.from( - Object.entries(logicTemplate?.logic_slot_types[index]) ?? [], + Object.entries(logicTemplate?.logic_slot_types.get(index)) ?? [], ); const logicFields = new Map( fieldEntryInfos.map(([slt, access]) => { @@ -321,11 +322,11 @@ export const globalObjectSignalMap = new ObjectComputedSignalMap(); type Constructor = new (...args: any[]) => T; export declare class VMObjectMixinInterface { - objectID: ObjectID; - activeICId: ObjectID; + objectID: Signal; + activeICId: Signal; objectSignals: ComputedObjectSignals | null; _handleDeviceModified(e: CustomEvent): void; - updateDevice(): void; + updateObject(): void; subscribe(...sub: VMObjectMixinSubscription[]): void; unsubscribe(filter: (sub: VMObjectMixinSubscription) => boolean): void; } @@ -338,14 +339,12 @@ export const VMObjectMixin = >( superClass: T, ) => { class VMObjectMixinClass extends superClass { - private _objectID: number; - get objectID() { - return this._objectID; - } - @property({ type: Number }) - set objectID(val: number) { - this._objectID = val; - this.updateDevice(); + objectID: Signal; + + constructor (...args: any[]) { + super(...args); + this.objectID = signal(null); + this.objectID.subscribe((_) => {this.updateObject()}) } @state() private objectSubscriptions: VMObjectMixinSubscription[] = []; @@ -354,16 +353,16 @@ export const VMObjectMixin = >( this.objectSubscriptions = this.objectSubscriptions.concat(sub); } - // remove subscripotions matching the filter + // remove subscriptions matching the filter unsubscribe(filter: (sub: VMObjectMixinSubscription) => boolean) { this.objectSubscriptions = this.objectSubscriptions.filter( (sub) => !filter(sub), ); } - @state() objectSignals: ComputedObjectSignals | null; + @state() objectSignals: ComputedObjectSignals | null = null; - @state() activeICId: number; + activeICId: Signal = signal(null); connectedCallback(): void { const root = super.connectedCallback(); @@ -385,7 +384,7 @@ export const VMObjectMixin = >( this._handleDevicesRemoved.bind(this), ); }); - this.updateDevice(); + this.updateObject(); return root; } @@ -413,20 +412,20 @@ export const VMObjectMixin = >( async _handleDeviceModified(e: CustomEvent) { const id = e.detail; const activeIcId = window.App.app.session.activeIC; - if (this.objectID === id) { - this.updateDevice(); + if (this.objectID.peek() === id) { + this.updateObject(); } else if ( id === activeIcId && this.objectSubscriptions.includes("active-ic") ) { - this.updateDevice(); + this.updateObject(); this.requestUpdate(); } else if (this.objectSubscriptions.includes("visible-devices")) { const visibleDevices = await window.VM.vm.visibleDeviceIds( - this.objectID, + this.objectID.peek(), ); if (visibleDevices.includes(id)) { - this.updateDevice(); + this.updateObject(); this.requestUpdate(); } } @@ -435,8 +434,8 @@ export const VMObjectMixin = >( async _handleDevicesModified(e: CustomEvent) { const activeIcId = window.App.app.session.activeIC; const ids = e.detail; - if (ids.includes(this.objectID)) { - this.updateDevice(); + if (ids.includes(this.objectID.peek())) { + this.updateObject(); if (this.objectSubscriptions.includes("visible-devices")) { this.requestUpdate(); } @@ -444,25 +443,25 @@ export const VMObjectMixin = >( ids.includes(activeIcId) && this.objectSubscriptions.includes("active-ic") ) { - this.updateDevice(); + this.updateObject(); this.requestUpdate(); } else if (this.objectSubscriptions.includes("visible-devices")) { const visibleDevices = await window.VM.vm.visibleDeviceIds( - this.objectID, + this.objectID.peek(), ); if (ids.some((id) => visibleDevices.includes(id))) { - this.updateDevice(); + this.updateObject(); this.requestUpdate(); } } } async _handleDeviceIdChange(e: CustomEvent<{ old: number; new: number }>) { - if (this.objectID === e.detail.old) { - this.objectID = e.detail.new; + if (this.objectID.peek() === e.detail.old) { + this.objectID.value = e.detail.new; } else if (this.objectSubscriptions.includes("visible-devices")) { const visibleDevices = await window.VM.vm.visibleDeviceIds( - this.objectID, + this.objectID.peek(), ); if ( visibleDevices.some( @@ -481,8 +480,9 @@ export const VMObjectMixin = >( } } - updateDevice() { - const newObjSignals = globalObjectSignalMap.get(this.objectID); + updateObject() { + this.activeICId.value = window.App.app.session.activeIC; + const newObjSignals = globalObjectSignalMap.get(this.objectID.peek()); if (newObjSignals !== this.objectSignals) { this.objectSignals = newObjSignals } @@ -503,9 +503,9 @@ export const VMActiveICMixin = >( superClass: T, ) => { class VMActiveICMixinClass extends VMObjectMixin(superClass) { - constructor() { - super(); - this.objectID = window.App.app.session.activeIC; + constructor(...args: any[]) { + super(...args); + this.objectID.value = window.App.app.session.activeIC; } connectedCallback(): void { @@ -535,10 +535,10 @@ export const VMActiveICMixin = >( _handleActiveIC(e: CustomEvent) { const id = e.detail; - if (this.objectID !== id) { - this.objectID = id; + if (this.objectID.value !== id) { + this.objectID.value = id; } - this.updateDevice(); + this.updateObject(); } } @@ -569,7 +569,7 @@ export const VMTemplateDBMixin = >( disconnectedCallback(): void { window.VM.vm.removeEventListener( - "vm-device-db-loaded", + "vm-template-db-loaded", this._handleDeviceDBLoad.bind(this), ); } diff --git a/www/src/ts/virtualMachine/controls.ts b/www/src/ts/virtualMachine/controls.ts index 4a712d0..1f100d8 100644 --- a/www/src/ts/virtualMachine/controls.ts +++ b/www/src/ts/virtualMachine/controls.ts @@ -1,16 +1,28 @@ -import { html, css } from "lit"; +import { html, css, nothing } from "lit"; import { customElement, query } from "lit/decorators.js"; import { BaseElement, defaultCss } from "components"; -import { VMActiveICMixin } from "virtualMachine/baseDevice"; +import { ComputedObjectSignals, globalObjectSignalMap, VMActiveICMixin } from "virtualMachine/baseDevice"; import SlSelect from "@shoelace-style/shoelace/dist/components/select/select.js"; +import { computed, Signal, watch } from "@lit-labs/preact-signals"; +import { FrozenObjectFull } from "ic10emu_wasm"; @customElement("vm-ic-controls") export class VMICControls extends VMActiveICMixin(BaseElement) { + circuitHolders: Signal; + constructor() { super(); - this.subscribe("ic", "active-ic") + this.subscribe("active-ic") + this.circuitHolders = computed(() => { + const ids = window.VM.vm.circuitHolderIds.value; + const circuitHolders = []; + for (const id of ids) { + circuitHolders.push(globalObjectSignalMap.get(id)); + } + return circuitHolders; + }); } static styles = [ @@ -64,8 +76,49 @@ export class VMICControls extends VMActiveICMixin(BaseElement) { @query(".active-ic-select") activeICSelect: SlSelect; + forceSelectUpdate() { + if (this.activeICSelect != null) { + this.activeICSelect.handleValueChange(); + } + } + protected render() { - const ics = Array.from(window.VM.vm.circuitHolders); + const icsOptions = computed(() => { + return this.circuitHolders.value.map((circuitHolder) => { + + circuitHolder.prefabName.subscribe((_) => {this.forceSelectUpdate()}); + circuitHolder.id.subscribe((_) => {this.forceSelectUpdate()}); + circuitHolder.displayName.subscribe((_) => {this.forceSelectUpdate()}); + + const span = circuitHolder.name ? html`${watch(circuitHolder.prefabName)}` : nothing ; + return html` + + ${span} + Device:${watch(circuitHolder.id)} ${watch(circuitHolder.displayName)} + ` + }); + }); + icsOptions.subscribe((_) => {this.forceSelectUpdate()}); + + const icErrors = computed(() => { + return this.objectSignals?.errors.value?.map( + (err) => + typeof err === "object" + && "ParseError" in err + ? html`
+ + Line: ${err.ParseError.line} - + ${"ParseError" in err ? err.ParseError.start : "N/A"}:${err.ParseError.end} + + ${err.ParseError.msg} +
` + : html`${JSON.stringify(err)}`, + ) ?? nothing; + }); + return html`
@@ -116,57 +169,33 @@ export class VMICControls extends VMActiveICMixin(BaseElement) { hoist size="small" placement="bottom" - value="${this.objectID}" + value="${watch(this.objectID)}" @sl-change=${this._handleChangeActiveIC} class="active-ic-select" > - ${ics.map( - ([id, device], _index) => - html` - ${device.obj_info.name - ? html`${device.obj_info.prefab}` - : ""} - Device:${id} ${device.obj_info.name ?? device.obj_info.prefab} - `, - )} + ${watch(icsOptions)}
Instruction Pointer - ${this.icIP} + ${this.objectSignals ? watch(this.objectSignals.icIP) : nothing}
Last Run Operations Count - ${this.icOpCount} + ${this.objectSignals ? watch(this.objectSignals.icOpCount) : nothing}
Last State - ${this.icState} + ${this.objectSignals ? watch(this.objectSignals.icState) : nothing}
Errors - ${this.errors?.map( - (err) => - typeof err === "object" - && "ParseError" in err - ? html`
- - Line: ${err.ParseError.line} - - ${"ParseError" in err ? err.ParseError.start : "N/A"}:${err.ParseError.end} - - ${err.ParseError.msg} -
` - : html`${JSON.stringify(err)}`, - )} + ${watch(icErrors)}
@@ -183,18 +212,6 @@ export class VMICControls extends VMActiveICMixin(BaseElement) { window.VM.get().then((vm) => vm.reset()); } - updateIC(): void { - super.updateIC(); - this.activeICSelect?.dispatchEvent(new Event("slotchange")); - // if (this.activeICSelect) { - // const val = this.activeICSelect.value; - // this.activeICSelect.value = ""; - // this.activeICSelect.requestUpdate(); - // this.activeICSelect.value = val; - // this.activeICSelect. - // } - } - _handleChangeActiveIC(e: CustomEvent) { const select = e.target as SlSelect; const icId = parseInt(select.value as string); diff --git a/www/src/ts/virtualMachine/device/card.ts b/www/src/ts/virtualMachine/device/card.ts index 348a08e..c238983 100644 --- a/www/src/ts/virtualMachine/device/card.ts +++ b/www/src/ts/virtualMachine/device/card.ts @@ -122,7 +122,7 @@ export class VMDeviceCard extends VMTemplateDBMixin( _handleDeviceDBLoad(e: CustomEvent): void { super._handleDeviceDBLoad(e); - this.updateDevice(); + this.updateObject(); } onImageErr(e: Event) { @@ -131,24 +131,38 @@ export class VMDeviceCard extends VMTemplateDBMixin( } renderHeader(): HTMLTemplateResult { - const thisIsActiveIc = this.activeICId === this.objectID; - const badges: HTMLTemplateResult[] = []; - if (thisIsActiveIc) { - badges.push(html`db`); - } - const activeIc = globalObjectSignalMap.get(this.activeICId); + const thisIsActiveIc = computed(() => { + return this.activeICId.value === this.objectID.value; + }); - const numPins = activeIc.numPins.value; - const pins = new Array(numPins) - .fill(true) - .map((_, index) => this.objectSignals.pins.value.get(index)); - pins.forEach((id, index) => { - if (this.objectID == id) { - badges.push( - html`d${index}`, - ); + const activeIc = computed(() => { + return globalObjectSignalMap.get(this.activeICId.value); + }); + + const numPins = computed(() => { + return activeIc.value.numPins.value; + }); + + const pins = computed(() => { + return new Array(numPins.value) + .fill(true) + .map((_, index) => this.objectSignals.pins.value.get(index)); + }); + const badgesHtml = computed(() => { + + const badges: HTMLTemplateResult[] = []; + if (thisIsActiveIc.value) { + badges.push(html`db`); } - }, this); + pins.value.forEach((id, index) => { + if (this.objectID.value == id) { + badges.push( + html`d${index}`, + ); + } + }, this); + return badges + }); return html`
Id Name - ${badges.map((badge) => badge)} + ${watch(badgesHtml)}
{ const conn = typeof connection === "object" && "CableNetwork" in connection @@ -273,7 +287,7 @@ export class VMDeviceCard extends VMTemplateDBMixin( @sl-change=${this._handleChangeConnection} > Connection:${index} - ${vmNetworks.map( + ${vmNetworks.value.map( (net) => html`Network ${net} { - if (!vm.changeObjectID(this.objectID, val)) { + if (!vm.changeObjectID(this.objectID.peek(), val)) { input.value = this.objectID.toString(); } }); @@ -434,10 +448,10 @@ export class VMDeviceCard extends VMTemplateDBMixin( const input = e.target as SlInput; const name = input.value.length === 0 ? undefined : input.value; window.VM.get().then((vm) => { - if (!vm.setObjectName(this.objectID, name)) { + if (!vm.setObjectName(this.objectID.peek(), name)) { input.value = this.objectSignals.name.value; } - this.updateDevice(); + this.updateObject(); }); } _handleDeviceRemoveButton(_e: Event) { @@ -446,7 +460,7 @@ export class VMDeviceCard extends VMTemplateDBMixin( _removeDialogRemove() { this.removeDialog.hide(); - window.VM.get().then((vm) => vm.removeDevice(this.objectID)); + window.VM.get().then((vm) => vm.removeDevice(this.objectID.peek())); } _handleChangeConnection(e: CustomEvent) { @@ -454,8 +468,8 @@ export class VMDeviceCard extends VMTemplateDBMixin( const conn = parseInt(select.getAttribute("key")!); const val = select.value ? parseInt(select.value as string) : undefined; window.VM.get().then((vm) => - vm.setDeviceConnection(this.objectID, conn, val), + vm.setDeviceConnection(this.objectID.peek(), conn, val), ); - this.updateDevice(); + this.updateObject(); } } diff --git a/www/src/ts/virtualMachine/device/dbutils.ts b/www/src/ts/virtualMachine/device/dbutils.ts index 5c132b0..d9b66a1 100644 --- a/www/src/ts/virtualMachine/device/dbutils.ts +++ b/www/src/ts/virtualMachine/device/dbutils.ts @@ -12,7 +12,7 @@ export function connectionFromConnectionInfo(conn: ConnectionInfo): Connection { ) { connection = { CableNetwork: { - net: window.VM.vm.defaultNetwork, + net: window.VM.vm.defaultNetwork.peek(), typ: conn.typ as CableConnectionType, role: conn.role, }, diff --git a/www/src/ts/virtualMachine/device/deviceList.ts b/www/src/ts/virtualMachine/device/deviceList.ts index e9ef09f..178a13a 100644 --- a/www/src/ts/virtualMachine/device/deviceList.ts +++ b/www/src/ts/virtualMachine/device/deviceList.ts @@ -10,10 +10,15 @@ import { default as uFuzzy } from "@leeoniya/ufuzzy"; import { VMSlotAddDialog } from "./slotAddDialog"; import "./addDevice" import { SlotModifyEvent } from "./slot"; +import { computed, Signal, signal, SignalWatcher, watch } from "@lit-labs/preact-signals"; +import { globalObjectSignalMap } from "virtualMachine/baseDevice"; +import { ObjectID } from "ic10emu_wasm"; @customElement("vm-device-list") -export class VMDeviceList extends BaseElement { - @state() devices: number[]; +export class VMDeviceList extends SignalWatcher(BaseElement) { + devices: Signal; + private _filter: Signal = signal(""); + private _filteredDeviceIds: Signal; static styles = [ ...defaultCss, @@ -43,17 +48,50 @@ export class VMDeviceList extends BaseElement { constructor() { super(); - this.devices = [...window.VM.vm.objectIds]; - } + this.devices = computed(() => { + const objIds = window.VM.vm.objectIds.value; + const deviceIds = []; + for (const id of objIds) { + const obj = window.VM.vm.objects.get(id); + const info = obj.value.obj_info; + if (!(info.parent_slot != null || info.root_parent_human != null)) { + deviceIds.push(id) + } + } + deviceIds.sort(); + return deviceIds; + }); + this._filteredDeviceIds = computed(() => { + if (this._filter.value) { + const datapoints: [string, number][] = []; + for (const device_id of this.devices.value) { + const device = globalObjectSignalMap.get(device_id); + if (device) { + const name = device.name.peek(); + const id = device.id.peek(); + const prefab = device.prefabName.peek(); + if (name != null) { + datapoints.push([name, id]); + } + if (prefab != null) { + datapoints.push([prefab, id]); + } + } + } + const haystack: string[] = datapoints.map((data) => data[0]); + const uf = new uFuzzy({}); + const [_idxs, info, order] = uf.search(haystack, this._filter.value, 0, 1e3); - connectedCallback(): void { - super.connectedCallback(); - window.VM.get().then((vm) => - vm.addEventListener( - "vm-devices-update", - this._handleDevicesUpdate.bind(this), - ), - ); + const filtered = order?.map((infoIdx) => datapoints[info.idx[infoIdx]]); + const deviceIds: number[] = + filtered + ?.map((data) => data[1]) + ?.filter((val, index, arr) => arr.indexOf(val) === index) ?? []; + return deviceIds; + } else { + return Array.from(this.devices.value); + } + }); } protected firstUpdated(_changedProperties: PropertyValueMap | Map): void { @@ -63,27 +101,20 @@ export class VMDeviceList extends BaseElement { ); } - _handleDevicesUpdate(e: CustomEvent) { - const ids = e.detail; - if (!structuralEqual(this.devices, ids)) { - this.devices = ids; - this.devices.sort(); - } - } - protected render(): HTMLTemplateResult { const deviceCards = repeat( - this.filteredDeviceIds, + this.filteredDeviceIds.value, (id) => id, (id) => html` `, ); + const numDevices = computed(() => this.devices.value.length); const result = html`
Devices: - ${this.devices.length} + ${watch(numDevices)} data[0]); - const uf = new uFuzzy({}); - const [_idxs, info, order] = uf.search(haystack, this._filter, 0, 1e3); - - const filtered = order?.map((infoIdx) => datapoints[info.idx[infoIdx]]); - const deviceIds: number[] = - filtered - ?.map((data) => data[1]) - ?.filter((val, index, arr) => arr.indexOf(val) === index) ?? []; - this._filteredDeviceIds = deviceIds; - } else { - this._filteredDeviceIds = undefined; - } - } } diff --git a/www/src/ts/virtualMachine/device/fields.ts b/www/src/ts/virtualMachine/device/fields.ts index 6b4fea3..d71b1ad 100644 --- a/www/src/ts/virtualMachine/device/fields.ts +++ b/www/src/ts/virtualMachine/device/fields.ts @@ -53,10 +53,10 @@ export class VMDeviceSlot extends VMObjectMixin(VMTemplateDBMixin(BaseElement)) const field = input.getAttribute("key")! as LogicType; const val = parseNumber(input.value); window.VM.get().then((vm) => { - if (!vm.setObjectField(this.objectID, field, val, true)) { + if (!vm.setObjectField(this.objectID.peek(), field, val, true)) { input.value = this.objectSignals.logicFields.value.get(field).value.toString(); } - this.updateDevice(); + this.updateObject(); }); } } diff --git a/www/src/ts/virtualMachine/device/pins.ts b/www/src/ts/virtualMachine/device/pins.ts index 13609b5..240a8b3 100644 --- a/www/src/ts/virtualMachine/device/pins.ts +++ b/www/src/ts/virtualMachine/device/pins.ts @@ -63,7 +63,7 @@ export class VMDevicePins extends VMObjectMixin(VMTemplateDBMixin(BaseElement)) const select = e.target as SlSelect; const pin = parseInt(select.getAttribute("key")!); const val = select.value ? parseInt(select.value as string) : undefined; - window.VM.get().then((vm) => vm.setDevicePin(this.objectID, pin, val)); - this.updateDevice(); + window.VM.get().then((vm) => vm.setDevicePin(this.objectID.peek(), pin, val)); + this.updateObject(); } } diff --git a/www/src/ts/virtualMachine/device/slot.ts b/www/src/ts/virtualMachine/device/slot.ts index 04c442b..6f05e04 100644 --- a/www/src/ts/virtualMachine/device/slot.ts +++ b/www/src/ts/virtualMachine/device/slot.ts @@ -268,7 +268,7 @@ export class VMDeviceSlot extends VMObjectMixin(VMTemplateDBMixin(SignalWatcher( } _handleSlotOccupantRemove() { - window.VM.vm.removeSlotOccupant(this.objectID, this.slotIndex); + window.VM.vm.removeSlotOccupant(this.objectID.peek(), this.slotIndex); } _handleSlotClick(_e: Event) { @@ -276,7 +276,7 @@ export class VMDeviceSlot extends VMObjectMixin(VMTemplateDBMixin(SignalWatcher( new CustomEvent("device-modify-slot", { bubbles: true, composed: true, - detail: { deviceID: this.objectID, slotIndex: this.slotIndex }, + detail: { deviceID: this.objectID.peek(), slotIndex: this.slotIndex }, }), ); } @@ -293,7 +293,7 @@ export class VMDeviceSlot extends VMObjectMixin(VMTemplateDBMixin(SignalWatcher( ); if ( !window.VM.vm.setObjectSlotField( - this.objectID, + this.objectID.peek(), this.slotIndex, "Quantity", val, @@ -365,7 +365,7 @@ export class VMDeviceSlot extends VMObjectMixin(VMTemplateDBMixin(SignalWatcher( } window.VM.get().then((vm) => { if ( - !vm.setObjectSlotField(this.objectID, this.slotIndex, field, val, true) + !vm.setObjectSlotField(this.objectID.peek(), this.slotIndex, field, val, true) ) { input.value = ( this.slotSignal.value.logicFields ?? @@ -374,7 +374,7 @@ export class VMDeviceSlot extends VMObjectMixin(VMTemplateDBMixin(SignalWatcher( .get(field) .toString(); } - this.updateDevice(); + this.updateObject(); }); } diff --git a/www/src/ts/virtualMachine/device/slotAddDialog.ts b/www/src/ts/virtualMachine/device/slotAddDialog.ts index de6fd41..4650aef 100644 --- a/www/src/ts/virtualMachine/device/slotAddDialog.ts +++ b/www/src/ts/virtualMachine/device/slotAddDialog.ts @@ -1,7 +1,7 @@ -import { html, css } from "lit"; +import { html, css, nothing } from "lit"; import { customElement, property, query, state } from "lit/decorators.js"; import { BaseElement, defaultCss } from "components"; -import { VMTemplateDBMixin } from "virtualMachine/baseDevice"; +import { ComputedObjectSignals, globalObjectSignalMap, VMTemplateDBMixin } from "virtualMachine/baseDevice"; import SlInput from "@shoelace-style/shoelace/dist/components/input/input.component.js"; import SlDialog from "@shoelace-style/shoelace/dist/components/dialog/dialog.component.js"; import { VMDeviceCard } from "./card"; @@ -15,6 +15,8 @@ import { ObjectInfo, ObjectTemplate, } from "ic10emu_wasm"; +import { computed, ReadonlySignal, signal, Signal, watch } from "@lit-labs/preact-signals"; +import { repeat } from "lit/directives/repeat.js"; type SlotableItemTemplate = Extract; @@ -38,30 +40,33 @@ export class VMSlotAddDialog extends VMTemplateDBMixin(BaseElement) { `, ]; - private _items: Map = new Map(); - private _filteredItems: SlotableItemTemplate[]; - private _datapoints: [string, string][] = []; - private _haystack: string[] = []; + private _items: Signal> = signal({}); + private _filteredItems: ReadonlySignal; + private _datapoints: ReadonlySignal<[string, string][]>; + private _haystack: ReadonlySignal; - private _filter: string = ""; + private _filter: Signal = signal(""); get filter() { - return this._filter; + return this._filter.peek(); } - @state() set filter(val: string) { - this._filter = val; - this.performSearch(); + this._filter.value = val; } - private _searchResults: { + private _searchResults: ReadonlySignal<{ entry: SlotableItemTemplate; haystackEntry: string; ranges: number[]; - }[] = []; + }[]>; + + constructor() { + super(); + this.setupSearch(); + } postDBSetUpdate(): void { - this._items = new Map( + this._items.value = Object.fromEntries( Array.from(Object.values(this.templateDB)).flatMap((template) => { if ("item" in template) { return [[template.prefab.prefab_name, template]] as [ @@ -73,77 +78,84 @@ export class VMSlotAddDialog extends VMTemplateDBMixin(BaseElement) { } }), ); - this.setupSearch(); - this.performSearch(); } setupSearch() { - let filteredItems = Array.from(this._items.values()); - if ( - typeof this.objectID !== "undefined" && - typeof this.slotIndex !== "undefined" - ) { - const obj = window.VM.vm.objects.get(this.objectID); - const template = obj.template; - const slot = "slots" in template ? template.slots[this.slotIndex] : null; - const typ = slot.typ; + const filteredItems = computed(() => { + let filtered = Array.from(Object.values(this._items.value)); + const obj = globalObjectSignalMap.get(this.objectID.value ?? null); + if (obj != null) { + const template = obj.template; + const slot = "slots" in template.value ? template.value.slots[this.slotIndex.value] : null; + const typ = slot.typ; - if (typeof typ === "string" && typ !== "None") { - filteredItems = Array.from(this._items.values()).filter( - (item) => item.item.slot_class === typ, + if (typeof typ === "string" && typ !== "None") { + filtered = Array.from(Object.values(this._items.value)).filter( + (item) => item.item.slot_class === typ, + ); + } + } + return filtered; + }); + this._filteredItems = filteredItems; + + const datapoints = computed(() => { + const datapoints: [string, string][] = []; + for (const entry of this._filteredItems.value) { + datapoints.push( + [entry.prefab.name, entry.prefab.prefab_name], + [entry.prefab.prefab_name, entry.prefab.prefab_name], + [entry.prefab.desc, entry.prefab.prefab_name], ); } - } - this._filteredItems = filteredItems; - const datapoints: [string, string][] = []; - for (const entry of this._filteredItems) { - datapoints.push( - [entry.prefab.name, entry.prefab.prefab_name], - [entry.prefab.prefab_name, entry.prefab.prefab_name], - [entry.prefab.desc, entry.prefab.prefab_name], - ); - } - - const haystack: string[] = datapoints.map((data) => data[0]); + return datapoints; + }); this._datapoints = datapoints; + + const haystack: Signal = computed(() => { + return datapoints.value.map((data) => data[0]); + }); this._haystack = haystack; - } - performSearch() { - if (this._filter) { - const uf = new uFuzzy({}); - const [_idxs, info, order] = uf.search( - this._haystack, - this._filter, - 0, - 1e3, - ); + const searchResults = computed(() => { + let results; + if (this._filter.value) { + const uf = new uFuzzy({}); + const [_idxs, info, order] = uf.search( + this._haystack.value, + this._filter.value, + 0, + 1e3, + ); - const filtered = - order?.map((infoIdx) => ({ - name: this._datapoints[info.idx[infoIdx]][1], - haystackEntry: this._haystack[info.idx[infoIdx]], - ranges: info.ranges[infoIdx], - })) ?? []; + const filtered = + order?.map((infoIdx) => ({ + name: this._datapoints.value[info.idx[infoIdx]][1], + haystackEntry: this._haystack.value[info.idx[infoIdx]], + ranges: info.ranges[infoIdx], + })) ?? []; - const uniqueNames = new Set(filtered.map((obj) => obj.name)); - const unique = [...uniqueNames].map((result) => { - return filtered.find((obj) => obj.name === result); - }); + const uniqueNames = new Set(filtered.map((obj) => obj.name)); + const unique = [...uniqueNames].map((result) => { + return filtered.find((obj) => obj.name === result); + }); - this._searchResults = unique.map(({ name, haystackEntry, ranges }) => ({ - entry: this._items.get(name)!, - haystackEntry, - ranges, - })); - } else { - // return everything - this._searchResults = [...this._filteredItems].map((st) => ({ - entry: st, - haystackEntry: st.prefab.prefab_name, - ranges: [], - })); - } + results = unique.map(({ name, haystackEntry, ranges }) => ({ + entry: this._items.value[name]!, + haystackEntry, + ranges, + })); + } else { + // return everything + results = [...this._filteredItems.value].map((st) => ({ + entry: st, + haystackEntry: st.prefab.prefab_name, + ranges: [], + })); + } + return results; + }); + this._searchResults = searchResults; } renderSearchResults() { @@ -156,10 +168,13 @@ export class VMSlotAddDialog extends VMTemplateDBMixin(BaseElement) { None
`; - return html` -
- ${enableNone ? none : ""} - ${this._searchResults.map((result) => { + const resultsHtml = computed(() => { + return repeat( + this._searchResults.value, + (result) => { + return result.entry.prefab.prefab_hash; + }, + (result) => { const imgSrc = `img/stationpedia/${result.entry.prefab.prefab_name}.png`; const img = html` ${result.entry.prefab.name}
`; - })} + } + ); + }); + return html` +
+ ${enableNone ? none : ""} + ${watch(resultsHtml)}
`; } _handleClickNone() { - window.VM.vm.removeSlotOccupant(this.objectID, this.slotIndex); + window.VM.vm.removeSlotOccupant(this.objectID.peek(), this.slotIndex.peek()); this.hide(); } _handleClickItem(e: Event) { const div = e.currentTarget as HTMLDivElement; const key = parseInt(div.getAttribute("key")); - const entry = this.templateDB[key] as SlotableItemTemplate; - const obj = window.VM.vm.objects.get(this.objectID); - const dbTemplate = obj.template; + const entry = this.templateDB.get(key) as SlotableItemTemplate; + const obj = window.VM.vm.objects.get(this.objectID.peek()); + const dbTemplate = obj.peek().template; console.log("using entry", dbTemplate); const template: FrozenObject = { @@ -203,7 +224,7 @@ export class VMSlotAddDialog extends VMTemplateDBMixin(BaseElement) { database_template: true, template: undefined, }; - window.VM.vm.setSlotOccupant(this.objectID, this.slotIndex, template, 1); + window.VM.vm.setSlotOccupant(this.objectID.peek(), this.slotIndex.peek(), template, 1); this.hide(); } @@ -211,12 +232,22 @@ export class VMSlotAddDialog extends VMTemplateDBMixin(BaseElement) { @query(".device-search-input") searchInput: SlInput; render() { - const device = window.VM.vm.objects.get(this.objectID); - const name = device?.obj_info.name ?? device?.obj_info.prefab ?? ""; - const id = this.objectID ?? 0; + const device = computed(() => { + return globalObjectSignalMap.get(this.objectID.value) ?? null; + }); + const name = computed(() => { + return device.value?.displayName.value ?? nothing; + + }); + const id = computed(() => this.objectID.value ?? 0); + const resultsHtml = html` +
+ ${this.renderSearchResults()} +
+ `; return html` @@ -230,16 +261,7 @@ export class VMSlotAddDialog extends VMTemplateDBMixin(BaseElement) { Search Items - ${when( - typeof this.objectID !== "undefined" && - typeof this.slotIndex !== "undefined", - () => html` -
- ${this.renderSearchResults()} -
- `, - () => html``, - )} + ${resultsHtml}
`; } @@ -262,14 +284,12 @@ export class VMSlotAddDialog extends VMTemplateDBMixin(BaseElement) { this.slotIndex = undefined; } - @state() private objectID: number; - @state() private slotIndex: number; + private objectID: Signal = signal(null); + private slotIndex: Signal = signal(0); show(objectID: number, slotIndex: number) { - this.objectID = objectID; - this.slotIndex = slotIndex; - this.setupSearch(); - this.performSearch(); + this.objectID.value = objectID; + this.slotIndex.value = slotIndex; this.dialog.show(); this.searchInput.select(); } diff --git a/www/src/ts/virtualMachine/device/template.ts b/www/src/ts/virtualMachine/device/template.ts index 5970b77..897af10 100644 --- a/www/src/ts/virtualMachine/device/template.ts +++ b/www/src/ts/virtualMachine/device/template.ts @@ -24,7 +24,9 @@ import { crc32, displayNumber, parseNumber } from "utils"; import SlInput from "@shoelace-style/shoelace/dist/components/input/input.component.js"; import SlSelect from "@shoelace-style/shoelace/dist/components/select/select.component.js"; import { VMDeviceCard } from "./card"; -import { VMTemplateDBMixin } from "virtualMachine/baseDevice"; +import { globalObjectSignalMap, VMTemplateDBMixin } from "virtualMachine/baseDevice"; +import { computed, Signal, watch } from "@lit-labs/preact-signals"; +import { createRef, ref, Ref } from "lit/directives/ref.js"; export interface SlotTemplate { typ: Class; @@ -74,13 +76,13 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { `, ]; - @state() fields: Map; - @state() slots: SlotTemplate[]; - @state() pins: (ObjectID | undefined)[]; - @state() template: FrozenObject; - @state() objectId: number | undefined; - @state() objectName: string | undefined; - @state() connections: Connection[]; + fields: Signal>; + slots: Signal; + pins: Signal<(ObjectID | undefined)[]>; + template: Signal; + objectId: Signal; + objectName: Signal; + connections: Signal; constructor() { super(); @@ -105,13 +107,13 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { } get dbTemplate(): ObjectTemplate { - return this.templateDB[this._prefabHash]; + return this.templateDB.get(this._prefabHash); } setupState() { const dbTemplate = this.dbTemplate; - this.fields = new Map( + this.fields.value = Object.fromEntries( ( Array.from( "logic" in dbTemplate @@ -123,9 +125,9 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { lt === "PrefabHash" ? this.dbTemplate.prefab.prefab_hash : 0.0; return [lt, value]; }), - ); + ) as Record; - this.slots = ( + this.slots.value = ( ("slots" in dbTemplate ? dbTemplate.slots ?? [] : []) as SlotInfo[] ).map( (slot, _index) => @@ -152,17 +154,18 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { } }); - this.connections = connections.map((conn) => conn[1]); + this.connections.value = connections.map((conn) => conn[1]); const numPins = "device" in dbTemplate ? dbTemplate.device.device_pins_length : 0; - this.pins = new Array(numPins).fill(undefined); + this.pins.value = new Array(numPins).fill(undefined); } + renderFields(): HTMLTemplateResult { const fields = Object.entries(this.fields); return html` ${fields.map(([name, field], _index, _fields) => { - return html` + return html` ${field.field_type} `; - })} + })} `; } @@ -182,13 +185,22 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { const input = e.target as SlInput; const field = input.getAttribute("key")! as LogicType; const val = parseNumber(input.value); - this.fields.set(field, val); + this.fields.value = { ...this.fields.value, [field]: val}; if (field === "ReferenceId" && val !== 0) { - this.objectId = val; + this.objectId.value = val; } - this.requestUpdate(); } + forceSelectUpdate(...slSelects: Ref[]) { + for (const slSelect of slSelects) { + if (slSelect.value != null && "handleValueChange" in slSelect.value) { + slSelect.value.handleValueChange(); + } + } + } + + private networksSelectRef: Ref = createRef(); + renderSlot(slot: Slot, slotIndex: number): HTMLTemplateResult { return html` `; } @@ -203,34 +215,37 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { renderNetworks() { const vm = window.VM.vm; - const vmNetworks = vm.networks; - const connections = this.connections; + const vmNetworks = computed(() => { + return vm.networkIds.value.map((net) => html`Network ${net}`); + }); + const connections = computed(() => { + this.connections.value.map((connection, index, _conns) => { + const conn = + typeof connection === "object" && "CableNetwork" in connection + ? connection.CableNetwork + : null; + return html` + + Connection:${index} + ${watch(vmNetworks)} + ${conn?.typ} + + `; + }); + }); + vmNetworks.subscribe((_) => { this.forceSelectUpdate(this.networksSelectRef)}) return html`
- ${connections.map((connection, index, _conns) => { - const conn = - typeof connection === "object" && "CableNetwork" in connection - ? connection.CableNetwork - : null; - return html` - - Connection:${index} - ${vmNetworks.map( - (net) => - html`Network ${net}`, - )} - ${conn?.typ} - - `; - })} + ${watch(connections)}
`; } @@ -239,53 +254,89 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { const select = e.target as SlSelect; const conn = parseInt(select.getAttribute("key")!); const val = select.value ? parseInt(select.value as string) : undefined; - (this.connections[conn] as ConnectionCableNetwork).CableNetwork.net = val; - this.requestUpdate(); + const copy = [...this.connections.value]; + (copy[conn] as ConnectionCableNetwork).CableNetwork.net = val; + this.connections.value = copy; + } + + private _pinsSelectRefMap: Map> = new Map(); + + getPinRef(index: number) : Ref { + if (!this._pinsSelectRefMap.has(index)) { + this._pinsSelectRefMap.set(index, createRef()); + } + return this._pinsSelectRefMap.get(index); + } + + forcePinSelectUpdate() { + this.forceSelectUpdate(...this._pinsSelectRefMap.values()); } renderPins(): HTMLTemplateResult { - const networks = this.connections.flatMap((connection, index) => { - return typeof connection === "object" && "CableNetwork" in connection - ? [connection.CableNetwork.net] - : []; + const networks = computed(() => { + return this.connections.value.flatMap((connection, index) => { + return typeof connection === "object" && "CableNetwork" in connection + ? [connection.CableNetwork.net] + : []; + }); }); - const visibleDeviceIds = [ + const visibleDeviceIds = computed(() => { + return [ ...new Set( - networks.flatMap((net) => window.VM.vm.networkDataDevices(net)), + networks.value.flatMap((net) => window.VM.vm.networkDataDevicesSignal(net).value), ), ]; - const visibleDevices = visibleDeviceIds.map((id) => - window.VM.vm.objects.get(id), - ); - const pinsHtml = this.pins?.map( - (pin, index) => - html` - d${index} - ${visibleDevices.map( - (device, _index) => html` - - Device ${device.obj_info.id} : - ${device.obj_info.name ?? device.obj_info.prefab} - - `, - )} - `, - ); - return html`
${pinsHtml}
`; + + }); + const visibleDevices = computed(() => { + return visibleDeviceIds.value.map((id) => + globalObjectSignalMap.get(id), + ); + }); + const visibleDevicesHtml = computed(() => { + return visibleDevices.value.map( + (device, _index) => { + device.id.subscribe((_) => { this.forcePinSelectUpdate(); }); + device.displayName.subscribe((_) => { this.forcePinSelectUpdate(); }); + return html` + + Device ${watch(device.id)} : + ${watch(device.displayName)} + + ` + } + ) + }); + visibleDeviceIds.subscribe((_) => { this.forcePinSelectUpdate(); }); + const pinsHtml = computed(() => { + this.pins.value.map( + (pin, index) => { + const pinRef = this.getPinRef(index) + return html` + d${index} + ${watch(visibleDevicesHtml)} + ` + } + ); + }); + return html`
${watch(pinsHtml)}
`; } _handleChangePin(e: CustomEvent) { const select = e.target as SlSelect; const pin = parseInt(select.getAttribute("key")!); - const val = select.value ? parseInt(select.value as string) : undefined; - this.pins[pin] = val; + const val = select.value ? parseInt(select.value as string) : null; + const copy = [...this.pins.value]; + copy[pin] = val; + this.pins.value = copy; } render() { @@ -339,13 +390,13 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { ); // Typescript doesn't like fileds defined as `X | undefined` not being present, hence cast const objInfo: ObjectInfo = { - id: this.objectId, - name: this.objectName, + id: this.objectId.value, + name: this.objectName.value, prefab: this.prefabName, } as ObjectInfo; - if (this.slots.length > 0) { - const slotOccupants: [FrozenObject, number][] = this.slots.flatMap( + if (this.slots.value.length > 0) { + const slotOccupants: [FrozenObject, number][] = this.slots.value.flatMap( (slot, index) => { return typeof slot.occupant !== "undefined" ? [[slot.occupant, index]] @@ -367,8 +418,8 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { }), ); } - objInfo.slots = Object.fromEntries( - this.slots.flatMap((slot, index) => { + objInfo.slots = new Map( + this.slots.value.flatMap((slot, index) => { const occupantId = slotOccupantIdsMap.get(index); if (typeof occupantId !== "undefined") { const info: SlotOccupantInfo = { @@ -383,9 +434,9 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { ); } - if (this.connections.length > 0) { - objInfo.connections = Object.fromEntries( - this.connections.flatMap((conn, index) => { + if (this.connections.value.length > 0) { + objInfo.connections = new Map( + this.connections.value.flatMap((conn, index) => { return typeof conn === "object" && "CableNetwork" in conn && typeof conn.CableNetwork.net !== "undefined" @@ -395,11 +446,8 @@ export class VmObjectTemplate extends VMTemplateDBMixin(BaseElement) { ); } - if (this.fields.size > 0) { - objInfo.logic_values = Object.fromEntries(this.fields) as Record< - LogicType, - number - >; + if (Object.keys(this.fields.value).length > 0) { + objInfo.logic_values = new Map(Object.entries(this.fields.value) as [LogicType, number][]); } const template: FrozenObject = { diff --git a/www/src/ts/virtualMachine/index.ts b/www/src/ts/virtualMachine/index.ts index 06df283..f402d75 100644 --- a/www/src/ts/virtualMachine/index.ts +++ b/www/src/ts/virtualMachine/index.ts @@ -14,7 +14,7 @@ import * as Comlink from "comlink"; import "./baseDevice"; import "./device"; import { App } from "app"; -import { structuralEqual, TypedEventTarget } from "utils"; +import { comlinkSpecialJsonTransferHandler, structuralEqual, TypedEventTarget } from "utils"; export interface ToastMessage { variant: "warning" | "danger" | "success" | "primary" | "neutral"; icon: string; @@ -26,8 +26,10 @@ import { signal, computed, effect, + batch, } from '@lit-labs/preact-signals'; import type { Signal } from '@lit-labs/preact-signals'; +import { getJsonContext } from "./jsonErrorUtils"; export interface VirtualMachineEventMap { "vm-template-db-loaded": CustomEvent; @@ -41,16 +43,23 @@ export interface VirtualMachineEventMap { "vm-message": CustomEvent; } +Comlink.transferHandlers.set("SpecialJson", comlinkSpecialJsonTransferHandler); + +const jsonErrorRegex = /((invalid type: .*)|(missing field .*)) at line (?\d+) column (?\d+)/; + class VirtualMachine extends TypedEventTarget() { ic10vm: Comlink.Remote; templateDBPromise: Promise; templateDB: TemplateDatabase; - private _vmState: Signal; + private _vmState: Signal = signal(null); private _objects: Map>; + private _objectIds: Signal; private _circuitHolders: Map>; + private _circuitHolderIds: Signal; private _networks: Map>; + private _networkIds: Signal; private _default_network: Signal; private vm_worker: Worker; @@ -62,15 +71,17 @@ class VirtualMachine extends TypedEventTarget() { this.app = app; this._objects = new Map(); + this._objectIds = signal([]); this._circuitHolders = new Map(); + this._circuitHolderIds = signal([]); this._networks = new Map(); + this._networkIds = signal([]); + this._networkDevicesSignals = new Map(); this.setupVM(); } async setupVM() { - this.templateDBPromise = this.ic10vm.getTemplateDatabase(); - this.templateDBPromise.then((db) => this.setupTemplateDatabase(db)); this.vm_worker = new Worker(new URL("./vmWorker.ts", import.meta.url)); const loaded = (w: Worker) => @@ -82,6 +93,9 @@ class VirtualMachine extends TypedEventTarget() { this._vmState.value = await this.ic10vm.saveVMState(); window.VM.set(this); + this.templateDBPromise = this.ic10vm.getTemplateDatabase(); + this.templateDBPromise.then((db) => this.setupTemplateDatabase(db)); + effect(() => { this.updateObjects(this._vmState.value); this.updateNetworks(this._vmState.value); @@ -98,26 +112,24 @@ class VirtualMachine extends TypedEventTarget() { return this._objects; } - get objectIds(): ObjectID[] { - const ids = Array.from(this._objects.keys()); - ids.sort(); - return ids; + get objectIds(): Signal { + return this._objectIds; } get circuitHolders() { return this._circuitHolders; } - get circuitHolderIds(): ObjectID[] { - const ids = Array.from(this._circuitHolders.keys()); - ids.sort(); - return ids; + get circuitHolderIds(): Signal { + return this._circuitHolderIds; } - get networks(): ObjectID[] { - const ids = Array.from(this._networks.keys()); - ids.sort(); - return ids; + get networks() { + return this._networks; + } + + get networkIds(): Signal { + return this._networkIds; } get defaultNetwork() { @@ -187,6 +199,9 @@ class VirtualMachine extends TypedEventTarget() { } this.app.session.save(); } + + networkIds.sort(); + this._networkIds.value = networkIds; } async updateObjects(state: FrozenVM) { @@ -260,6 +275,15 @@ class VirtualMachine extends TypedEventTarget() { } this.app.session.save(); } + + objectIds.sort(); + const circuitHolderIds = Array.from(this._circuitHolders.keys()); + circuitHolderIds.sort(); + + batch(() => { + this._objectIds.value = objectIds; + this._circuitHolderIds.value = circuitHolderIds; + }); } async updateCode() { @@ -332,23 +356,52 @@ class VirtualMachine extends TypedEventTarget() { } } - handleVmError(err: Error) { - console.log("Error in Virtual Machine", err); - const message: ToastMessage = { + handleVmError(err: Error, args: { context?: string, jsonContext?: string, trace?: boolean } = {}) { + const message = args.context ? `Error in Virtual Machine {${args.context}}` : "Error in Virtual Machine"; + console.log(message, err); + if (args.jsonContext != null) { + const jsonTypeError = err.message.match(jsonErrorRegex) + if (jsonTypeError) { + console.log( + "Json Error context", + getJsonContext( + parseInt(jsonTypeError.groups["errorLine"]), + parseInt(jsonTypeError.groups["errorColumn"]), + args.jsonContext, + 100 + ) + ) + } + } + if (args.trace) { + console.trace(); + } + const toastMessage: ToastMessage = { variant: "danger", icon: "bug", title: `Error in Virtual Machine ${err.name}`, msg: err.message, id: Date.now().toString(16), }; - this.dispatchCustomEvent("vm-message", message); + this.dispatchCustomEvent("vm-message", toastMessage); } // return the data connected oject ids for a network - networkDataDevices(network: ObjectID): number[] { + networkDataDevices(network: ObjectID): ObjectID[] { return this._networks.get(network)?.peek().devices ?? []; } + private _networkDevicesSignals: Map>; + + networkDataDevicesSignal(network: ObjectID): Signal { + if (!this._networkDevicesSignals.has(network) && this._networks.get(network) != null) { + this._networkDevicesSignals.set(network, computed( + () => this._networks.get(network).value.devices ?? [] + )); + } + return this._networkDevicesSignals.get(network); + } + async changeObjectID(oldID: number, newID: number): Promise { try { await this.ic10vm.changeDeviceId(oldID, newID); @@ -581,12 +634,13 @@ class VirtualMachine extends TypedEventTarget() { async restoreVMState(state: FrozenVM) { try { + console.info("Restoring VM State from", state); await this.ic10vm.restoreVMState(state); this._objects = new Map(); this._circuitHolders = new Map(); await this.update(); } catch (e) { - this.handleVmError(e); + this.handleVmError(e, {jsonContext: JSON.stringify(state)}); } } diff --git a/www/src/ts/virtualMachine/jsonErrorUtils.ts b/www/src/ts/virtualMachine/jsonErrorUtils.ts new file mode 100644 index 0000000..3cbdb83 --- /dev/null +++ b/www/src/ts/virtualMachine/jsonErrorUtils.ts @@ -0,0 +1,192 @@ +function jsonMatchingBrace(char: string): string { + switch (char) { + case "[": + return "]"; + case "]": + return "["; + case "{": + return "}"; + case "}": + return "{"; + default: + return char; + } +} + +function readJsonContextBack(ctx: string, maxLen: number, stringCanEnd: boolean): string { + const tokenContexts: string[] = []; + let inStr: boolean = false; + let foundOpen: boolean = false; + let ctxEnd: number = 0; + let lastChar: string | null = null; + let lastNonWhitespaceChar: string | null = null; + let countStringOpens: number = 0; + let countObjectsFound: number = 0; + const chars = ctx.split(""); + for (let i = chars.length; i >= 0; i--) { + const c = chars[i]; + if (c === ":" && inStr && countStringOpens === 1 && lastNonWhitespaceChar === '"') { + inStr = false; + tokenContexts.pop(); + } + if (c === "\\" && !inStr && lastChar === '"') { + if (lastChar != null) { + tokenContexts.push(lastChar); + } + foundOpen = false; + inStr = true; + continue; + } + if (c === '"') { + if (inStr && (tokenContexts.length > 0 ? tokenContexts[tokenContexts.length - 1] : null) === c) { + inStr = false; + if (stringCanEnd) { + foundOpen = true; + } + tokenContexts.pop(); + } else { + inStr = true; + countStringOpens += 1; + tokenContexts.push(c); + } + } + if ((c === "]" || c === "}") && !inStr) { + tokenContexts.push(c); + } + if ( + (c === "[" || c === "{") + && !inStr + && (tokenContexts.length > 0 ? tokenContexts[tokenContexts.length - 1] : null) === jsonMatchingBrace(c) + ) { + tokenContexts.pop(); + foundOpen = true; + } + if ( + (c === ",") + && !inStr + && (lastNonWhitespaceChar === "[" || lastNonWhitespaceChar === "{" || lastNonWhitespaceChar === '"') + ) { + foundOpen = true; + } + + lastChar = c; + if (!(' \t\n\r\v'.indexOf(c) > -1)) { + lastNonWhitespaceChar = c; + } + if (foundOpen && !tokenContexts.length) { + countObjectsFound += 1; + } + if (countObjectsFound >= 2) { + ctxEnd = i; + break; + } + } + if (ctxEnd > 0) { + ctx = ctx.substring(ctxEnd); + } + if (maxLen > 0 && ctx.length > maxLen) { + ctx = "... " + ctx.substring(maxLen); + } + return ctx; +} + +function readJsonContextForward(ctx: string, maxLen: number, stringCanEnd: boolean): string { + const tokenContexts: string[] = []; + let inStr: boolean = false; + let foundClose: boolean = false; + let ctxEnd: number = 0; + let lastChar: string | null = null; + let lastNonWhitespaceChar: string | null = null; + let countStringOpens: number = 0; + let countObjectsFound: number = 0; + const chars = ctx.split(""); + for (let i = 0; i < chars.length; i++) { + const c = chars[i]; + if (c === ":" && inStr && countStringOpens === 1 && lastNonWhitespaceChar === '"') { + inStr = false; + tokenContexts.pop(); + } + if (c === "\\" && !inStr && lastChar === "'") { + if (lastChar != null) { + tokenContexts.push(lastChar); + } + foundClose = false; + inStr = true; + continue; + } + if (c === '"') { + if ( + inStr + && (tokenContexts.length > 0 ? tokenContexts[tokenContexts.length - 1] : null) === c + ) { + inStr = false; + if (stringCanEnd) { + foundClose = true; + } + tokenContexts.pop(); + } else { + inStr = true; + countStringOpens += 1; + tokenContexts.push(c); + } + } + if ( + (c === "]" || c === "}") + && !inStr + ) { + tokenContexts.pop(); + foundClose = true; + } + if ( + (c === "[" || c === "{") + && !inStr + && (tokenContexts.length > 0 ? tokenContexts[tokenContexts.length - 1] : null) === jsonMatchingBrace(c) + ) { + tokenContexts.push(c); + } + if ( + (c === ",") + && !inStr + && (lastNonWhitespaceChar === "]" || lastNonWhitespaceChar === "}" || lastNonWhitespaceChar === '"') + ) { + foundClose = true; + } + + lastChar = c; + if (!(' \t\n\r\v'.indexOf(c) > -1)) { + lastNonWhitespaceChar = c; + } + if (foundClose && !tokenContexts.length) { + countObjectsFound += 1; + } + if (countObjectsFound >= 2) { + ctxEnd = i; + break; + } + } + if (ctxEnd > 0) { + ctx = ctx.substring(0, ctxEnd); + } + if (maxLen > 0 && ctx.length > maxLen) { + ctx = ctx.substring(0, maxLen) + " ..."; + } + return ctx +} + +export function getJsonContext(errLine: number, errColumn: number, body: string, maxLen: number): string { + if (!body.length) { + return body; + } + + const stringCanEnd = body[0] !== '[' && body[0] !== "{"; + + const lineOffset = (body.split("").map((c, i) => [c, i]).filter(([c, _]) => c === "\n")[errLine - 1] as [string, number] ?? ["", 0] as [string, number])[1]; + + const preLine = body.substring(0, lineOffset); + const ctxLine = body.substring(lineOffset); + + const ctxBefore = preLine + ctxLine.substring(0, errColumn); + const ctxAfter = ctxLine.substring(errColumn); + + return readJsonContextBack(ctxBefore, maxLen, stringCanEnd) + "<~~" + readJsonContextForward(ctxAfter, maxLen, stringCanEnd); +} diff --git a/www/src/ts/virtualMachine/prefabDatabase.ts b/www/src/ts/virtualMachine/prefabDatabase.ts index 68f5796..a6ef4f4 100644 --- a/www/src/ts/virtualMachine/prefabDatabase.ts +++ b/www/src/ts/virtualMachine/prefabDatabase.ts @@ -214,7 +214,7 @@ export default { } ], "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemCharcoal", "ItemCobaltOre", "ItemFern", @@ -279,7 +279,7 @@ export default { } ], "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemCorn", "ItemEgg", "ItemFertilizedEgg", @@ -322,7 +322,7 @@ export default { } ], "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemCookedCondensedMilk", "ItemCookedCorn", "ItemCookedMushroom", @@ -361,7 +361,7 @@ export default { } ], "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemSoyOil", "ReagentColorBlue", "ReagentColorGreen", @@ -468,7 +468,7 @@ export default { } ], "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemWheat", "ItemSugarCane", "ItemCocoaTree", @@ -722,7 +722,7 @@ export default { "prefab_name": "CartridgeAtmosAnalyser", "prefab_hash": -1550278665, "desc": "The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by ExMin for use with the OreCore Handheld Tablet. It displays the pressure, concentration and molar quantity of gas in rooms, tanks, or pipe networks.", - "name": "Atmos Analyzer" + "name": "Cartridge (Atmos Analyzer)" }, "item": { "consumable": false, @@ -738,7 +738,7 @@ export default { "prefab_name": "CartridgeConfiguration", "prefab_hash": -932136011, "desc": "", - "name": "Configuration" + "name": "Cartridge (Configuration)" }, "item": { "consumable": false, @@ -754,7 +754,7 @@ export default { "prefab_name": "CartridgeElectronicReader", "prefab_hash": -1462180176, "desc": "", - "name": "eReader" + "name": "Cartridge (eReader)" }, "item": { "consumable": false, @@ -770,7 +770,7 @@ export default { "prefab_name": "CartridgeGPS", "prefab_hash": -1957063345, "desc": "", - "name": "GPS" + "name": "Cartridge (GPS)" }, "item": { "consumable": false, @@ -786,7 +786,7 @@ export default { "prefab_name": "CartridgeGuide", "prefab_hash": 872720793, "desc": "", - "name": "Guide" + "name": "Cartridge (Guide)" }, "item": { "consumable": false, @@ -802,7 +802,7 @@ export default { "prefab_name": "CartridgeMedicalAnalyser", "prefab_hash": -1116110181, "desc": "When added to the OreCore Handheld Tablet, Asura's's ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users.", - "name": "Medical Analyzer" + "name": "Cartridge (Medical Analyzer)" }, "item": { "consumable": false, @@ -818,7 +818,7 @@ export default { "prefab_name": "CartridgeNetworkAnalyser", "prefab_hash": 1606989119, "desc": "A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied Sinotai design, it's used in conjunction with the OreCore Handheld Tablet.", - "name": "Network Analyzer" + "name": "Cartridge (Network Analyzer)" }, "item": { "consumable": false, @@ -834,7 +834,7 @@ export default { "prefab_name": "CartridgeOreScanner", "prefab_hash": -1768732546, "desc": "When inserted into a Handheld Tablet the scanner will display minerals hidden underground on the tablet.", - "name": "Ore Scanner" + "name": "Cartridge (Ore Scanner)" }, "item": { "consumable": false, @@ -850,7 +850,7 @@ export default { "prefab_name": "CartridgeOreScannerColor", "prefab_hash": 1738236580, "desc": "When inserted into a Handheld Tablet the scanner will display minerals hidden underground in different colors on the tablet.", - "name": "Ore Scanner (Color)" + "name": "Cartridge (Ore Scanner Color)" }, "item": { "consumable": false, @@ -866,7 +866,7 @@ export default { "prefab_name": "CartridgePlantAnalyser", "prefab_hash": 1101328282, "desc": "", - "name": "Cartridge Plant Analyser" + "name": "Cartridge (Plant Analyser)" }, "item": { "consumable": false, @@ -882,7 +882,7 @@ export default { "prefab_name": "CartridgeTracker", "prefab_hash": 81488783, "desc": "", - "name": "Tracker" + "name": "Cartridge (Tracker)" }, "item": { "consumable": false, @@ -1141,7 +1141,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Crate", "sorting_class": "Storage" }, "slots": [ @@ -1466,6 +1466,10 @@ export default { { "name": "Battery", "typ": "Battery" + }, + { + "name": "Liquid Canister", + "typ": "LiquidCanister" } ] }, @@ -1481,7 +1485,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Crate", "sorting_class": "Storage" }, "slots": [ @@ -1585,7 +1589,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Atmospherics" }, "thermal_info": { @@ -1604,14 +1608,14 @@ export default { "prefab": { "prefab_name": "DynamicGasCanisterCarbonDioxide", "prefab_hash": -322413931, - "desc": "Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or ... boom. Once it's full, you can refill a Canister (CO2) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere ... of sorts.", + "desc": "Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or... boom. Once it's full, you can refill a Canister (CO2) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere... of sorts.", "name": "Portable Gas Tank (CO2)" }, "item": { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1637,7 +1641,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1663,7 +1667,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1689,7 +1693,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1715,7 +1719,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1741,7 +1745,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1767,7 +1771,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1793,7 +1797,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1819,7 +1823,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1845,7 +1849,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Atmospherics" }, "thermal_info": { @@ -1871,7 +1875,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Default" }, "thermal_info": { @@ -1897,7 +1901,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Atmospherics" }, "thermal_info": { @@ -2058,7 +2062,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Atmospherics" }, "thermal_info": { @@ -2084,7 +2088,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Atmospherics" }, "thermal_info": { @@ -2110,7 +2114,7 @@ export default { "consumable": false, "ingredient": false, "max_quantity": 1, - "slot_class": "None", + "slot_class": "Portables", "sorting_class": "Atmospherics" }, "thermal_info": { @@ -2691,7 +2695,7 @@ export default { "prefab": { "prefab_name": "ItemAdvancedTablet", "prefab_hash": 1722785341, - "desc": "The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Atmos Analyzer, Tracker, Medical Analyzer, Ore Scanner, eReader, and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter", + "desc": "The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Cartridge (Atmos Analyzer), Cartridge (Tracker), Cartridge (Medical Analyzer), Cartridge (Ore Scanner), Cartridge (eReader), and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter", "name": "Advanced Tablet" }, "item": { @@ -2906,7 +2910,7 @@ export default { "prefab_name": "ItemAreaPowerControl", "prefab_hash": 1757673317, "desc": "This kit places a Area Power Control (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow.", - "name": "Kit (Power Controller)" + "name": "Kit (Area Power Controller)" }, "item": { "consumable": false, @@ -3257,7 +3261,7 @@ export default { "prefab": { "prefab_name": "ItemCableCoilHeavy", "prefab_hash": 2060134443, - "desc": "Use heavy cable coil for power systems with large draws. Unlike , which can only safely conduct 5kW, heavy cables can transmit up to 100kW.", + "desc": "Use heavy cable coil for power systems with large draws. Unlike Cable Coil, which can only safely conduct 5kW, heavy cables can transmit up to 100kW.", "name": "Cable Coil (Heavy)" }, "item": { @@ -3380,6 +3384,90 @@ export default { "sorting_class": "Food" } }, + "ItemCerealBarBag": { + "templateType": "ItemSlots", + "prefab": { + "prefab_name": "ItemCerealBarBag", + "prefab_hash": -75205276, + "desc": "", + "name": "Cereal Bar Bag" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Storage" + }, + "slots": [ + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + } + ] + }, + "ItemCerealBarBox": { + "templateType": "ItemSlots", + "prefab": { + "prefab_name": "ItemCerealBarBox", + "prefab_hash": -401648353, + "desc": "", + "name": "Cereal Bar Box" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Storage" + }, + "slots": [ + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + } + ] + }, "ItemCharcoal": { "templateType": "Item", "prefab": { @@ -3765,7 +3853,7 @@ export default { "ingredient": true, "max_quantity": 10, "reagents": { - "Soy": 5.0 + "Soy": 1.0 }, "slot_class": "None", "sorting_class": "Food" @@ -4345,7 +4433,7 @@ export default { } ], "suit_info": { - "hygine_reduction_multiplier": 1.0, + "hygiene_reduction_multiplier": 1.0, "waste_max_pressure": 4053.0 } }, @@ -4442,6 +4530,48 @@ export default { }, "slots": [] }, + "ItemEmergencySuppliesBox": { + "templateType": "ItemSlots", + "prefab": { + "prefab_name": "ItemEmergencySuppliesBox", + "prefab_hash": 851103794, + "desc": "", + "name": "Emergency Supplies" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Default" + }, + "slots": [ + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + } + ] + }, "ItemEmergencyToolBelt": { "templateType": "ItemSlots", "prefab": { @@ -4592,7 +4722,7 @@ export default { } ], "suit_info": { - "hygine_reduction_multiplier": 1.0, + "hygiene_reduction_multiplier": 1.0, "waste_max_pressure": 4053.0 } }, @@ -4602,14 +4732,14 @@ export default { "prefab_name": "ItemExplosive", "prefab_hash": 235361649, "desc": "", - "name": "Remote Explosive" + "name": "Demolition Charge" }, "item": { "consumable": false, "ingredient": false, - "max_quantity": 1, - "slot_class": "None", - "sorting_class": "Default" + "max_quantity": 3, + "slot_class": "Tool", + "sorting_class": "Tools" } }, "ItemFern": { @@ -6459,7 +6589,7 @@ export default { } ], "suit_info": { - "hygine_reduction_multiplier": 1.5, + "hygiene_reduction_multiplier": 1.5, "waste_max_pressure": 4053.0 }, "memory": { @@ -6711,6 +6841,28 @@ export default { "sorting_class": "Resources" } }, + "ItemInsulatedCanisterPackage": { + "templateType": "ItemSlots", + "prefab": { + "prefab_name": "ItemInsulatedCanisterPackage", + "prefab_hash": 1485675617, + "desc": "", + "name": "Insulated Canister Package" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Default" + }, + "slots": [ + { + "name": "", + "typ": "None" + } + ] + }, "ItemInsulation": { "templateType": "Item", "prefab": { @@ -8273,6 +8425,22 @@ export default { "sorting_class": "Kits" } }, + "ItemKitLinearRail": { + "templateType": "Item", + "prefab": { + "prefab_name": "ItemKitLinearRail", + "prefab_hash": -441759975, + "desc": "", + "name": "Kit (Linear Rail)" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 10, + "slot_class": "None", + "sorting_class": "Kits" + } + }, "ItemKitLiquidRegulator": { "templateType": "Item", "prefab": { @@ -8871,7 +9039,7 @@ export default { "prefab_name": "ItemKitReinforcedWindows", "prefab_hash": 1459985302, "desc": "", - "name": "Kit (Reinforced Windows)" + "name": "Kit (Reinforced Walls)" }, "item": { "consumable": false, @@ -8913,6 +9081,38 @@ export default { "sorting_class": "Kits" } }, + "ItemKitRobotArmDoor": { + "templateType": "Item", + "prefab": { + "prefab_name": "ItemKitRobotArmDoor", + "prefab_hash": -753675589, + "desc": "", + "name": "Kit (Linear Rail Door)" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 10, + "slot_class": "None", + "sorting_class": "Kits" + } + }, + "ItemKitRoboticArm": { + "templateType": "Item", + "prefab": { + "prefab_name": "ItemKitRoboticArm", + "prefab_hash": -1228287398, + "desc": "", + "name": "Kit (LArRE)" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Kits" + } + }, "ItemKitRocketAvionics": { "templateType": "Item", "prefab": { @@ -9831,7 +10031,7 @@ export default { "prefab_name": "ItemKitWindowShutter", "prefab_hash": 1779979754, "desc": "", - "name": "Kit (Window Shutter)" + "name": "Kit (Composite Window Shutter)" }, "item": { "consumable": false, @@ -10117,7 +10317,7 @@ export default { "prefab": { "prefab_name": "ItemLiquidPipeValve", "prefab_hash": -2126113312, - "desc": "This kit creates a Liquid Valve.", + "desc": "This kit creates a Valve (Liquid).", "name": "Kit (Liquid Pipe Valve)" }, "item": { @@ -10908,9 +11108,9 @@ export default { "item": { "consumable": false, "ingredient": false, - "max_quantity": 1, - "slot_class": "None", - "sorting_class": "Default" + "max_quantity": 3, + "slot_class": "Tool", + "sorting_class": "Tools" } }, "ItemMiningDrill": { @@ -11039,6 +11239,48 @@ export default { } ] }, + "ItemMiningPackage": { + "templateType": "ItemSlots", + "prefab": { + "prefab_name": "ItemMiningPackage", + "prefab_hash": 384478267, + "desc": "", + "name": "Mining Supplies Package" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Storage" + }, + "slots": [ + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + } + ] + }, "ItemMkIIToolbelt": { "templateType": "ItemLogic", "prefab": { @@ -11379,8 +11621,8 @@ export default { "prefab": { "prefab_name": "ItemPassiveVent", "prefab_hash": 238631271, - "desc": "This kit creates a Passive Vent among other variants.", - "name": "Passive Vent" + "desc": "This kit creates a Kit (Passive Vent) among other variants.", + "name": "Kit (Passive Vent)" }, "item": { "consumable": false, @@ -11635,7 +11877,7 @@ export default { "prefab": { "prefab_name": "ItemPipeValve", "prefab_hash": 799323450, - "desc": "This kit creates a Valve.", + "desc": "This kit creates a Valve (Gas).", "name": "Kit (Pipe Valve)" }, "item": { @@ -11857,6 +12099,48 @@ export default { "sorting_class": "Resources" } }, + "ItemPortablesPackage": { + "templateType": "ItemSlots", + "prefab": { + "prefab_name": "ItemPortablesPackage", + "prefab_hash": 1459105919, + "desc": "", + "name": "Portables Package" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Storage" + }, + "slots": [ + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + } + ] + }, "ItemPotato": { "templateType": "Item", "prefab": { @@ -12287,7 +12571,7 @@ export default { "prefab": { "prefab_name": "ItemRemoteDetonator", "prefab_hash": 678483886, - "desc": "", + "desc": "0.Mode0\n1.Mode1", "name": "Remote Detonator" }, "item": { @@ -12313,10 +12597,17 @@ export default { }, "logic_types": { "Power": "Read", + "Mode": "ReadWrite", "Error": "Read", + "Activate": "ReadWrite", + "Lock": "ReadWrite", "On": "ReadWrite", "ReferenceId": "Read" }, + "modes": { + "0": "Mode0", + "1": "Mode1" + }, "transmission_receiver": false, "wireless_logic": false, "circuit_holder": false @@ -12328,6 +12619,48 @@ export default { } ] }, + "ItemResidentialPackage": { + "templateType": "ItemSlots", + "prefab": { + "prefab_name": "ItemResidentialPackage", + "prefab_hash": 509629504, + "desc": "", + "name": "Residential Supplies Package" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Storage" + }, + "slots": [ + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + } + ] + }, "ItemReusableFireExtinguisher": { "templateType": "ItemSlots", "prefab": { @@ -13513,7 +13846,7 @@ export default { "prefab": { "prefab_name": "ItemTablet", "prefab_hash": -229808600, - "desc": "The Xigo handheld 'Padi' tablet is an all-purpose data platform, provided as standard issue to all Stationeers. A dynamic multi-tool that accepts a range of cartridges, the Padi becomes an Atmos Analyzer or Tracker, Medical Analyzer, Ore Scanner, eReader, and various other functions.", + "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 Cartridge (Atmos Analyzer) or Cartridge (Tracker), Cartridge (Medical Analyzer), Cartridge (Ore Scanner), Cartridge (eReader), and various other functions.", "name": "Handheld Tablet" }, "item": { @@ -13757,7 +14090,7 @@ export default { "prefab": { "prefab_name": "ItemVolatiles", "prefab_hash": 1253102035, - "desc": "An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity's sake, these are often displayed as H2 by devices like the Atmos Analyzer.\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n", + "desc": "An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity's sake, these are often displayed as H2 by devices like the Cartridge (Atmos Analyzer).\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n", "name": "Ice (Volatiles)" }, "item": { @@ -13851,6 +14184,90 @@ export default { "sorting_class": "Default" } }, + "ItemWaterBottleBag": { + "templateType": "ItemSlots", + "prefab": { + "prefab_name": "ItemWaterBottleBag", + "prefab_hash": 1476318823, + "desc": "", + "name": "Water Bottle Bag" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Storage" + }, + "slots": [ + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + } + ] + }, + "ItemWaterBottlePackage": { + "templateType": "ItemSlots", + "prefab": { + "prefab_name": "ItemWaterBottlePackage", + "prefab_hash": -971586619, + "desc": "", + "name": "Water Bottle Package" + }, + "item": { + "consumable": false, + "ingredient": false, + "max_quantity": 1, + "slot_class": "None", + "sorting_class": "Storage" + }, + "slots": [ + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + }, + { + "name": "", + "typ": "None" + } + ] + }, "ItemWaterPipeDigitalValve": { "templateType": "Item", "prefab": { @@ -14047,7 +14464,7 @@ export default { "prefab_name": "ItemWreckageAirConditioner1", "prefab_hash": -1826023284, "desc": "", - "name": "Wreckage Air Conditioner" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14063,7 +14480,7 @@ export default { "prefab_name": "ItemWreckageAirConditioner2", "prefab_hash": 169888054, "desc": "", - "name": "Wreckage Air Conditioner" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14079,7 +14496,7 @@ export default { "prefab_name": "ItemWreckageHydroponicsTray1", "prefab_hash": -310178617, "desc": "", - "name": "Wreckage Hydroponics Tray" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14095,7 +14512,7 @@ export default { "prefab_name": "ItemWreckageLargeExtendableRadiator01", "prefab_hash": -997763, "desc": "", - "name": "Wreckage Large Extendable Radiator" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14111,7 +14528,7 @@ export default { "prefab_name": "ItemWreckageStructureRTG1", "prefab_hash": 391453348, "desc": "", - "name": "Wreckage Structure RTG" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14127,7 +14544,7 @@ export default { "prefab_name": "ItemWreckageStructureWeatherStation001", "prefab_hash": -834664349, "desc": "", - "name": "Wreckage Structure Weather Station" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14143,7 +14560,7 @@ export default { "prefab_name": "ItemWreckageStructureWeatherStation002", "prefab_hash": 1464424921, "desc": "", - "name": "Wreckage Structure Weather Station" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14159,7 +14576,7 @@ export default { "prefab_name": "ItemWreckageStructureWeatherStation003", "prefab_hash": 542009679, "desc": "", - "name": "Wreckage Structure Weather Station" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14175,7 +14592,7 @@ export default { "prefab_name": "ItemWreckageStructureWeatherStation004", "prefab_hash": -1104478996, "desc": "", - "name": "Wreckage Structure Weather Station" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14191,7 +14608,7 @@ export default { "prefab_name": "ItemWreckageStructureWeatherStation005", "prefab_hash": -919745414, "desc": "", - "name": "Wreckage Structure Weather Station" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14207,7 +14624,7 @@ export default { "prefab_name": "ItemWreckageStructureWeatherStation006", "prefab_hash": 1344576960, "desc": "", - "name": "Wreckage Structure Weather Station" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14223,7 +14640,7 @@ export default { "prefab_name": "ItemWreckageStructureWeatherStation007", "prefab_hash": 656649558, "desc": "", - "name": "Wreckage Structure Weather Station" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14239,7 +14656,7 @@ export default { "prefab_name": "ItemWreckageStructureWeatherStation008", "prefab_hash": -1214467897, "desc": "", - "name": "Wreckage Structure Weather Station" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14255,7 +14672,7 @@ export default { "prefab_name": "ItemWreckageTurbineGenerator1", "prefab_hash": -1662394403, "desc": "", - "name": "Wreckage Turbine Generator" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14271,7 +14688,7 @@ export default { "prefab_name": "ItemWreckageTurbineGenerator2", "prefab_hash": 98602599, "desc": "", - "name": "Wreckage Turbine Generator" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14287,7 +14704,7 @@ export default { "prefab_name": "ItemWreckageTurbineGenerator3", "prefab_hash": 1927790321, "desc": "", - "name": "Wreckage Turbine Generator" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14303,7 +14720,7 @@ export default { "prefab_name": "ItemWreckageWallCooler1", "prefab_hash": -1682930158, "desc": "", - "name": "Wreckage Wall Cooler" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14319,7 +14736,7 @@ export default { "prefab_name": "ItemWreckageWallCooler2", "prefab_hash": 45733800, "desc": "", - "name": "Wreckage Wall Cooler" + "name": "Wreckage" }, "item": { "consumable": false, @@ -14443,39 +14860,39 @@ export default { "slots": [ { "name": "", - "typ": "None" + "typ": "Crate" }, { "name": "", - "typ": "None" + "typ": "Crate" }, { "name": "", - "typ": "None" + "typ": "Crate" }, { "name": "", - "typ": "None" + "typ": "Crate" }, { "name": "", - "typ": "None" + "typ": "Crate" }, { "name": "", - "typ": "None" + "typ": "Crate" }, { "name": "", - "typ": "None" + "typ": "Portables" }, { "name": "", - "typ": "None" + "typ": "Portables" }, { - "name": "Entity", - "typ": "Entity" + "name": "", + "typ": "Crate" } ] }, @@ -15222,7 +15639,7 @@ export default { "prefab": { "prefab_name": "MotherboardComms", "prefab_hash": -337075633, - "desc": "When placed in a Computer and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land.", + "desc": "When placed in a Computer (Modern) and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land.", "name": "Communications Motherboard" }, "item": { @@ -15238,7 +15655,7 @@ export default { "prefab": { "prefab_name": "MotherboardLogic", "prefab_hash": 502555944, - "desc": "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items.", + "desc": "Motherboards are connected to Computer (Modern)s to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items.", "name": "Logic Motherboard" }, "item": { @@ -15270,7 +15687,7 @@ export default { "prefab": { "prefab_name": "MotherboardProgrammableChip", "prefab_hash": -161107071, - "desc": "When placed in a Computer, the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing.", + "desc": "When placed in a Computer (Modern), the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing.", "name": "IC Editor Motherboard" }, "item": { @@ -15302,7 +15719,7 @@ export default { "prefab": { "prefab_name": "MotherboardSorter", "prefab_hash": -1908268220, - "desc": "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass.", + "desc": "Motherboards are connected to Computer (Modern)s to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass.", "name": "Sorter Motherboard" }, "item": { @@ -16713,7 +17130,7 @@ export default { "prefab": { "prefab_name": "StructureActiveVent", "prefab_hash": -1129453144, - "desc": "The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: 'Outward' sets it to pump gas into a space until pressure is reached; 'Inward' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward ...", + "desc": "The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: 'Outward' sets it to pump gas into a space until pressure is reached; 'Inward' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward...", "name": "Active Vent" }, "structure": { @@ -17076,7 +17493,7 @@ export default { "has_reagents": true }, "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemCookedCondensedMilk", "ItemCookedCorn", "ItemCookedMushroom", @@ -17170,7 +17587,7 @@ export default { }, "count_types": 3, "reagents": { - "Mushroom": 8.0, + "Mushroom": 5.0, "Oil": 1.0, "Steel": 1.0 } @@ -17306,7 +17723,7 @@ export default { "count_types": 3, "reagents": { "Oil": 1.0, - "Pumpkin": 5.0, + "Pumpkin": 2.0, "Steel": 1.0 } }, @@ -18431,7 +18848,7 @@ export default { "has_reagents": true }, "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemAstroloyIngot", "ItemConstantanIngot", "ItemCopperIngot", @@ -18482,6 +18899,31 @@ export default { "Silicon": 2.0 } }, + "ItemAstroloySheets": { + "tier": "TierOne", + "time": 3.0, + "energy": 500.0, + "temperature": { + "start": 1.0, + "stop": 80000.0, + "is_valid": false + }, + "pressure": { + "start": 0.0, + "stop": 1000000.0, + "is_valid": false + }, + "required_mix": { + "rule": 0, + "is_any": true, + "is_any_to_remove": false, + "reagents": {} + }, + "count_types": 1, + "reagents": { + "Astroloy": 3.0 + } + }, "ItemCableCoil": { "tier": "TierOne", "time": 5.0, @@ -19377,7 +19819,7 @@ export default { }, "count_types": 1, "reagents": { - "Steel": 2.0 + "Astroloy": 2.0 } }, "ItemKitRespawnPointWallMounted": { @@ -19406,6 +19848,33 @@ export default { "Iron": 3.0 } }, + "ItemKitRobotArmDoor": { + "tier": "TierTwo", + "time": 10.0, + "energy": 400.0, + "temperature": { + "start": 1.0, + "stop": 80000.0, + "is_valid": false + }, + "pressure": { + "start": 0.0, + "stop": 1000000.0, + "is_valid": false + }, + "required_mix": { + "rule": 0, + "is_any": true, + "is_any_to_remove": false, + "reagents": {} + }, + "count_types": 3, + "reagents": { + "Copper": 5.0, + "Gold": 3.0, + "Steel": 12.0 + } + }, "ItemKitRocketManufactory": { "tier": "TierOne", "time": 120.0, @@ -19864,7 +20333,7 @@ export default { }, "count_types": 2, "reagents": { - "Iron": 1.0, + "Solder": 1.0, "Steel": 2.0 } }, @@ -20504,7 +20973,7 @@ export default { "has_reagents": true }, "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemCorn", "ItemEgg", "ItemFertilizedEgg", @@ -20806,7 +21275,7 @@ export default { }, "count_types": 1, "reagents": { - "Rice": 3.0 + "Rice": 1.0 } }, "ItemCookedSoybean": { @@ -20831,7 +21300,7 @@ export default { }, "count_types": 1, "reagents": { - "Soy": 5.0 + "Soy": 1.0 } }, "ItemCookedTomato": { @@ -22507,7 +22976,7 @@ export default { "prefab": { "prefab_name": "StructureBlockBed", "prefab_hash": 697908419, - "desc": "Description coming.", + "desc": "", "name": "Block Bed" }, "structure": { @@ -25296,7 +25765,7 @@ export default { "prefab_name": "StructureChuteBin", "prefab_hash": -850484480, "desc": "The Stationeer's goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nLike most Recurso-designed systems, chute bins are simple and robust powered items, allowing items to be manually passed into chute networks by pulling a lever. They can also be programmed with logic to operate automatically, although full automation requires the use items such as a SDB Hopper.", - "name": "Chute Bin" + "name": "Chute Import Bin" }, "structure": { "small_grid": true @@ -25679,6 +26148,73 @@ export default { "has_reagents": false } }, + "StructureChuteExportBin": { + "templateType": "StructureLogicDevice", + "prefab": { + "prefab_name": "StructureChuteExportBin", + "prefab_hash": 1957571043, + "desc": "", + "name": "Chute Export Bin" + }, + "structure": { + "small_grid": true + }, + "logic": { + "logic_slot_types": { + "0": { + "Occupied": "Read", + "OccupantHash": "Read", + "Quantity": "Read", + "Damage": "Read", + "Class": "Read", + "MaxQuantity": "Read", + "PrefabHash": "Read", + "SortingClass": "Read", + "ReferenceId": "Read" + } + }, + "logic_types": { + "Power": "Read", + "Open": "ReadWrite", + "Error": "Read", + "Lock": "ReadWrite", + "On": "ReadWrite", + "RequiredPower": "Read", + "PrefabHash": "Read", + "ReferenceId": "Read", + "NameHash": "Read" + }, + "transmission_receiver": false, + "wireless_logic": false, + "circuit_holder": false + }, + "slots": [ + { + "name": "Input", + "typ": "None" + } + ], + "device": { + "connection_list": [ + { + "typ": "Chute", + "role": "Input" + }, + { + "typ": "PowerAndData", + "role": "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 + } + }, "StructureChuteFlipFlopSplitter": { "templateType": "StructureSlots", "prefab": { @@ -26741,13 +27277,154 @@ export default { "small_grid": false } }, + "StructureCompositeWindowShutter": { + "templateType": "Structure", + "prefab": { + "prefab_name": "StructureCompositeWindowShutter", + "prefab_hash": 1580592998, + "desc": "", + "name": "Composite Window Shutter" + }, + "structure": { + "small_grid": false + } + }, + "StructureCompositeWindowShutterConnector": { + "templateType": "Structure", + "prefab": { + "prefab_name": "StructureCompositeWindowShutterConnector", + "prefab_hash": 791407452, + "desc": "", + "name": "Composite Window Shutter Connector" + }, + "structure": { + "small_grid": false + } + }, + "StructureCompositeWindowShutterController": { + "templateType": "StructureLogicDevice", + "prefab": { + "prefab_name": "StructureCompositeWindowShutterController", + "prefab_hash": -2078371660, + "desc": "", + "name": "Composite Window Shutter Controller" + }, + "structure": { + "small_grid": true + }, + "logic": { + "logic_slot_types": {}, + "logic_types": { + "Power": "Read", + "Open": "ReadWrite", + "Error": "Read", + "Lock": "ReadWrite", + "On": "ReadWrite", + "RequiredPower": "Read", + "PrefabHash": "Read", + "ReferenceId": "Read", + "NameHash": "Read" + }, + "transmission_receiver": false, + "wireless_logic": false, + "circuit_holder": false + }, + "slots": [], + "device": { + "connection_list": [ + { + "typ": "Data", + "role": "None" + }, + { + "typ": "Power", + "role": "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 + } + }, "StructureComputer": { "templateType": "StructureLogicDevice", "prefab": { "prefab_name": "StructureComputer", "prefab_hash": -626563514, - "desc": "In some ways a relic, the 'Chonk R1' was designed by severely conflicted Norsec technicians, who needed a unit that could operate with a wide range of motherboards, while also enduring the worst a new Cadet could throw at it.\nThe result is a machine described by some as 'the only PC likely to survive our collision with a black hole', while other, less appreciative users regard it as sharing most of its technological DNA with a cheese grater.\nCompatible motherboards:\n- Logic Motherboard\n- Manufacturing Motherboard\n- Sorter Motherboard\n- Communications Motherboard\n- IC Editor Motherboard", - "name": "Computer" + "desc": "This unit operates with a wide range of motherboards.", + "name": "Computer (Modern)" + }, + "structure": { + "small_grid": true + }, + "logic": { + "logic_slot_types": { + "0": {}, + "1": {}, + "2": {} + }, + "logic_types": { + "Power": "Read", + "Open": "ReadWrite", + "Error": "Read", + "Lock": "ReadWrite", + "On": "ReadWrite", + "RequiredPower": "Read", + "PrefabHash": "Read", + "ReferenceId": "Read", + "NameHash": "Read" + }, + "transmission_receiver": false, + "wireless_logic": false, + "circuit_holder": false + }, + "slots": [ + { + "name": "Data Disk", + "typ": "DataDisk" + }, + { + "name": "Data Disk", + "typ": "DataDisk" + }, + { + "name": "Motherboard", + "typ": "Motherboard" + } + ], + "device": { + "connection_list": [ + { + "typ": "Data", + "role": "None" + }, + { + "typ": "Power", + "role": "None" + } + ], + "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 + } + }, + "StructureComputerUpright": { + "templateType": "StructureLogicDevice", + "prefab": { + "prefab_name": "StructureComputerUpright", + "prefab_hash": -405593895, + "desc": "This unit operates with a wide range of motherboards.", + "name": "Computer (Retro)" }, "structure": { "small_grid": true @@ -27528,7 +28205,7 @@ export default { "slots": [ { "name": "Container Slot", - "typ": "None" + "typ": "Crate" } ] }, @@ -28077,8 +28754,8 @@ export default { "prefab": { "prefab_name": "StructureDrinkingFountain", "prefab_hash": 1968371847, - "desc": "", - "name": "" + "desc": "The Drinking Fountain can be interacted with directly to increase hydration. It needs a Water supply.", + "name": "Drinking Fountain" }, "structure": { "small_grid": true @@ -28333,7 +29010,7 @@ export default { "has_reagents": true }, "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemAstroloyIngot", "ItemConstantanIngot", "ItemCopperIngot", @@ -30501,6 +31178,31 @@ export default { "Waspaloy": 20.0 } }, + "ItemKitLinearRail": { + "tier": "TierOne", + "time": 5.0, + "energy": 500.0, + "temperature": { + "start": 1.0, + "stop": 80000.0, + "is_valid": false + }, + "pressure": { + "start": 0.0, + "stop": 1000000.0, + "is_valid": false + }, + "required_mix": { + "rule": 0, + "is_any": true, + "is_any_to_remove": false, + "reagents": {} + }, + "count_types": 1, + "reagents": { + "Steel": 3.0 + } + }, "ItemKitLogicCircuit": { "tier": "TierOne", "time": 40.0, @@ -30793,6 +31495,33 @@ export default { "Iron": 9.0 } }, + "ItemKitRoboticArm": { + "tier": "TierOne", + "time": 150.0, + "energy": 10000.0, + "temperature": { + "start": 1.0, + "stop": 80000.0, + "is_valid": false + }, + "pressure": { + "start": 0.0, + "stop": 1000000.0, + "is_valid": false + }, + "required_mix": { + "rule": 0, + "is_any": true, + "is_any_to_remove": false, + "reagents": {} + }, + "count_types": 3, + "reagents": { + "Astroloy": 15.0, + "Hastelloy": 5.0, + "Inconel": 10.0 + } + }, "ItemKitSatelliteDish": { "tier": "TierOne", "time": 120.0, @@ -30822,8 +31551,8 @@ export default { }, "ItemKitSensor": { "tier": "TierOne", - "time": 5.0, - "energy": 10.0, + "time": 10.0, + "energy": 500.0, "temperature": { "start": 1.0, "stop": 80000.0, @@ -32450,7 +33179,7 @@ export default { "prefab": { "prefab_name": "StructureEmergencyButton", "prefab_hash": 1668452680, - "desc": "Description coming.", + "desc": "", "name": "Important Button" }, "structure": { @@ -34673,7 +35402,7 @@ export default { "has_reagents": true }, "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemAstroloyIngot", "ItemConstantanIngot", "ItemCopperIngot", @@ -36465,33 +37194,6 @@ export default { "Iron": 5.0 } }, - "ItemKitSensor": { - "tier": "TierOne", - "time": 10.0, - "energy": 500.0, - "temperature": { - "start": 1.0, - "stop": 80000.0, - "is_valid": false - }, - "pressure": { - "start": 0.0, - "stop": 1000000.0, - "is_valid": false - }, - "required_mix": { - "rule": 0, - "is_any": true, - "is_any_to_remove": false, - "reagents": {} - }, - "count_types": 3, - "reagents": { - "Copper": 1.0, - "Gold": 1.0, - "Iron": 1.0 - } - }, "ItemKitShower": { "tier": "TierOne", "time": 30.0, @@ -39238,7 +39940,7 @@ export default { "prefab": { "prefab_name": "StructureLargeSatelliteDish", "prefab_hash": 1913391845, - "desc": "This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", + "desc": "This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer (Modern) containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", "name": "Large Satellite Dish" }, "structure": { @@ -39445,7 +40147,7 @@ export default { "prefab": { "prefab_name": "StructureLightRound", "prefab_hash": 1514476632, - "desc": "Description coming.", + "desc": "", "name": "Light Round" }, "structure": { @@ -39489,7 +40191,7 @@ export default { "prefab": { "prefab_name": "StructureLightRoundAngled", "prefab_hash": 1592905386, - "desc": "Description coming.", + "desc": "", "name": "Light Round (Angled)" }, "structure": { @@ -39533,7 +40235,7 @@ export default { "prefab": { "prefab_name": "StructureLightRoundSmall", "prefab_hash": 1436121888, - "desc": "Description coming.", + "desc": "", "name": "Light Round (Small)" }, "structure": { @@ -39745,53 +40447,6 @@ export default { "has_reagents": false } }, - "StructureLiquidPipeOneWayValve": { - "templateType": "StructureLogicDevice", - "prefab": { - "prefab_name": "StructureLiquidPipeOneWayValve", - "prefab_hash": -782453061, - "desc": "The one way valve moves liquid in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure..", - "name": "One Way Valve (Liquid)" - }, - "structure": { - "small_grid": true - }, - "logic": { - "logic_slot_types": {}, - "logic_types": { - "Setting": "ReadWrite", - "Maximum": "Read", - "Ratio": "Read", - "PrefabHash": "Read", - "ReferenceId": "Read", - "NameHash": "Read" - }, - "transmission_receiver": false, - "wireless_logic": false, - "circuit_holder": false - }, - "slots": [], - "device": { - "connection_list": [ - { - "typ": "PipeLiquid", - "role": "Input" - }, - { - "typ": "PipeLiquid", - "role": "Output" - } - ], - "has_activate_state": false, - "has_atmosphere": false, - "has_color_state": false, - "has_lock_state": false, - "has_mode_state": false, - "has_on_off_state": false, - "has_open_state": false, - "has_reagents": false - } - }, "StructureLiquidPipeRadiator": { "templateType": "StructureLogicDevice", "prefab": { @@ -40474,7 +41129,7 @@ export default { "prefab_name": "StructureLiquidValve", "prefab_hash": 1849974453, "desc": "", - "name": "Liquid Valve" + "name": "Valve (Liquid)" }, "structure": { "small_grid": true @@ -43833,7 +44488,7 @@ export default { "prefab": { "prefab_name": "StructurePipeAnalysizer", "prefab_hash": 435685051, - "desc": "Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {ExMin engineer, the pipe analyzer is essentially a more advanced version of the Pipe Meter.\nDisplaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a Console or Computer via a {Logic system.", + "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 (Modern) via a {Logic system.", "name": "Pipe Analyzer" }, "structure": { @@ -44248,6 +44903,54 @@ export default { "radiation_factor": 0.0005 } }, + "StructurePipeLiquidOneWayValveLever": { + "templateType": "StructureLogicDevice", + "prefab": { + "prefab_name": "StructurePipeLiquidOneWayValveLever", + "prefab_hash": -523832822, + "desc": "", + "name": "One Way Valve (Liquid)" + }, + "structure": { + "small_grid": true + }, + "logic": { + "logic_slot_types": {}, + "logic_types": { + "Setting": "ReadWrite", + "Maximum": "Read", + "Ratio": "Read", + "On": "ReadWrite", + "PrefabHash": "Read", + "ReferenceId": "Read", + "NameHash": "Read" + }, + "transmission_receiver": false, + "wireless_logic": false, + "circuit_holder": false + }, + "slots": [], + "device": { + "connection_list": [ + { + "typ": "PipeLiquid", + "role": "Input" + }, + { + "typ": "PipeLiquid", + "role": "Output" + } + ], + "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 + } + }, "StructurePipeLiquidStraight": { "templateType": "Structure", "prefab": { @@ -44315,12 +45018,12 @@ export default { "has_reagents": false } }, - "StructurePipeOneWayValve": { + "StructurePipeOneWayValveLever": { "templateType": "StructureLogicDevice", "prefab": { - "prefab_name": "StructurePipeOneWayValve", - "prefab_hash": 1580412404, - "desc": "The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.\n", + "prefab_name": "StructurePipeOneWayValveLever", + "prefab_hash": 1289581593, + "desc": "", "name": "One Way Valve (Gas)" }, "structure": { @@ -44332,6 +45035,7 @@ export default { "Setting": "ReadWrite", "Maximum": "Read", "Ratio": "Read", + "On": "ReadWrite", "PrefabHash": "Read", "ReferenceId": "Read", "NameHash": "Read" @@ -44357,7 +45061,7 @@ export default { "has_color_state": false, "has_lock_state": false, "has_mode_state": false, - "has_on_off_state": false, + "has_on_off_state": true, "has_open_state": false, "has_reagents": false } @@ -44623,8 +45327,8 @@ export default { }, "slots": [ { - "name": "", - "typ": "None" + "name": "Portables", + "typ": "Portables" } ], "device": { @@ -46438,6 +47142,18 @@ export default { "small_grid": false } }, + "StructureReinforcedWall": { + "templateType": "Structure", + "prefab": { + "prefab_name": "StructureReinforcedWall", + "prefab_hash": -475746988, + "desc": "", + "name": "Reinforced Wall" + }, + "structure": { + "small_grid": false + } + }, "StructureReinforcedWallPaddedWindow": { "templateType": "Structure", "prefab": { @@ -46462,6 +47178,198 @@ export default { "small_grid": false } }, + "StructureRobotArmDoor": { + "templateType": "StructureLogicDevice", + "prefab": { + "prefab_name": "StructureRobotArmDoor", + "prefab_hash": -2131782367, + "desc": "", + "name": "Linear Rail Door" + }, + "structure": { + "small_grid": true + }, + "logic": { + "logic_slot_types": {}, + "logic_types": { + "Power": "Read", + "Open": "ReadWrite", + "RequiredPower": "Read", + "PrefabHash": "Read", + "ReferenceId": "Read", + "NameHash": "Read" + }, + "transmission_receiver": false, + "wireless_logic": false, + "circuit_holder": false + }, + "slots": [], + "device": { + "connection_list": [ + { + "typ": "Data", + "role": "None" + }, + { + "typ": "Power", + "role": "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 + } + }, + "StructureRoboticArmDock": { + "templateType": "StructureLogicDevice", + "prefab": { + "prefab_name": "StructureRoboticArmDock", + "prefab_hash": -1818718810, + "desc": "The Linear Articulated Rail Entity or LArRE can be used to plant, harvest and fertilize plants in plant trays. It can also grab items from a Chute Export Bin and drop them in a Chute Import Bin. LArRE can interact with plant trays or chute bins built under a linear rail station or built under its dock.", + "name": "LArRE Dock" + }, + "structure": { + "small_grid": true + }, + "logic": { + "logic_slot_types": { + "0": { + "Occupied": "Read", + "OccupantHash": "Read", + "Quantity": "Read", + "Damage": "Read", + "Class": "Read", + "MaxQuantity": "Read", + "PrefabHash": "Read", + "SortingClass": "Read", + "ReferenceId": "Read" + } + }, + "logic_types": { + "Power": "Read", + "Error": "Read", + "Activate": "ReadWrite", + "Setting": "ReadWrite", + "On": "ReadWrite", + "RequiredPower": "Read", + "Idle": "Read", + "PrefabHash": "Read", + "ReferenceId": "Read", + "Index": "Read", + "NameHash": "Read" + }, + "transmission_receiver": false, + "wireless_logic": false, + "circuit_holder": false + }, + "slots": [ + { + "name": "Arm Slot", + "typ": "None" + } + ], + "device": { + "connection_list": [ + { + "typ": "RoboticArmRail", + "role": "None" + }, + { + "typ": "RoboticArmRail", + "role": "None" + }, + { + "typ": "PowerAndData", + "role": "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 + } + }, + "StructureRoboticArmRailCorner": { + "templateType": "Structure", + "prefab": { + "prefab_name": "StructureRoboticArmRailCorner", + "prefab_hash": -1323992709, + "desc": "", + "name": "Linear Rail Corner" + }, + "structure": { + "small_grid": true + } + }, + "StructureRoboticArmRailCornerStop": { + "templateType": "Structure", + "prefab": { + "prefab_name": "StructureRoboticArmRailCornerStop", + "prefab_hash": 1974053060, + "desc": "", + "name": "Linear Rail Corner Station" + }, + "structure": { + "small_grid": true + } + }, + "StructureRoboticArmRailInnerCorner": { + "templateType": "Structure", + "prefab": { + "prefab_name": "StructureRoboticArmRailInnerCorner", + "prefab_hash": -267108827, + "desc": "", + "name": "Linear Rail Inner Corner" + }, + "structure": { + "small_grid": true + } + }, + "StructureRoboticArmRailOuterCorner": { + "templateType": "Structure", + "prefab": { + "prefab_name": "StructureRoboticArmRailOuterCorner", + "prefab_hash": -33470826, + "desc": "", + "name": "Linear Rail Outer Corner" + }, + "structure": { + "small_grid": true + } + }, + "StructureRoboticArmRailStraight": { + "templateType": "Structure", + "prefab": { + "prefab_name": "StructureRoboticArmRailStraight", + "prefab_hash": -1785844184, + "desc": "", + "name": "Linear Rail Straight" + }, + "structure": { + "small_grid": true + } + }, + "StructureRoboticArmRailStraightStop": { + "templateType": "Structure", + "prefab": { + "prefab_name": "StructureRoboticArmRailStraightStop", + "prefab_hash": 1800701885, + "desc": "", + "name": "Linear Rail Straight Station" + }, + "structure": { + "small_grid": true + } + }, "StructureRocketAvionics": { "templateType": "StructureLogicDevice", "prefab": { @@ -46532,7 +47440,8 @@ export default { "Size": "Read", "TotalQuantity": "Read", "MinedQuantity": "Read", - "NameHash": "Read" + "NameHash": "Read", + "Altitude": "Read" }, "modes": { "0": "Invalid", @@ -46891,7 +47800,7 @@ export default { "has_reagents": true }, "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemAstroloyIngot", "ItemConstantanIngot", "ItemCopperIngot", @@ -48501,7 +49410,7 @@ export default { "prefab": { "prefab_name": "StructureSatelliteDish", "prefab_hash": 439026183, - "desc": "This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", + "desc": "This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer (Modern) containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", "name": "Medium Satellite Dish" }, "structure": { @@ -48636,7 +49545,7 @@ export default { "has_reagents": true }, "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemAstroloyIngot", "ItemConstantanIngot", "ItemCopperIngot", @@ -49120,7 +50029,7 @@ export default { } }, "ItemExplosive": { - "tier": "TierOne", + "tier": "TierTwo", "time": 10.0, "energy": 500.0, "temperature": { @@ -49139,13 +50048,11 @@ export default { "is_any_to_remove": false, "reagents": {} }, - "count_types": 5, + "count_types": 3, "reagents": { - "Copper": 5.0, "Electrum": 1.0, - "Gold": 5.0, - "Lead": 10.0, - "Steel": 7.0 + "Silicon": 3.0, + "Solder": 1.0 } }, "ItemGrenade": { @@ -49178,7 +50085,7 @@ export default { }, "ItemMiningCharge": { "tier": "TierOne", - "time": 7.0, + "time": 5.0, "energy": 200.0, "temperature": { "start": 1.0, @@ -49196,12 +50103,11 @@ export default { "is_any_to_remove": false, "reagents": {} }, - "count_types": 4, + "count_types": 3, "reagents": { - "Copper": 5.0, - "Gold": 5.0, - "Iron": 7.0, - "Lead": 10.0 + "Gold": 1.0, + "Iron": 1.0, + "Silicon": 3.0 } }, "SMGMagazine": { @@ -50376,7 +51282,7 @@ export default { "prefab": { "prefab_name": "StructureSingleBed", "prefab_hash": -492611, - "desc": "Description coming.", + "desc": "", "name": "Single Bed" }, "structure": { @@ -50935,7 +51841,7 @@ export default { "prefab": { "prefab_name": "StructureSmallSatelliteDish", "prefab_hash": -2138748650, - "desc": "This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", + "desc": "This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer (Modern) containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", "name": "Small Satellite Dish" }, "structure": { @@ -51519,7 +52425,7 @@ export default { "has_reagents": false }, "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemCharcoal", "ItemCoalOre", "ItemSolidFuel" @@ -52015,7 +52921,7 @@ export default { "prefab": { "prefab_name": "StructureStirlingEngine", "prefab_hash": -260316435, - "desc": "Harnessing an ancient thermal exploit, the Recurso 'Libra' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room's ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results.", + "desc": "Harnessing an ancient thermal exploit, the Recurso 'Libra' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room's ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have... sub-optimal results.", "name": "Stirling Engine" }, "structure": { @@ -53290,7 +54196,7 @@ export default { "has_reagents": true }, "consumer_info": { - "consumed_resouces": [ + "consumed_resources": [ "ItemAstroloyIngot", "ItemConstantanIngot", "ItemCopperIngot", @@ -54102,6 +55008,33 @@ export default { "Iron": 5.0 } }, + "ItemExplosive": { + "tier": "TierTwo", + "time": 90.0, + "energy": 9000.0, + "temperature": { + "start": 1.0, + "stop": 80000.0, + "is_valid": false + }, + "pressure": { + "start": 0.0, + "stop": 1000000.0, + "is_valid": false + }, + "required_mix": { + "rule": 0, + "is_any": true, + "is_any_to_remove": false, + "reagents": {} + }, + "count_types": 3, + "reagents": { + "Electrum": 1.0, + "Silicon": 7.0, + "Solder": 2.0 + } + }, "ItemFlagSmall": { "tier": "TierOne", "time": 1.0, @@ -54787,6 +55720,33 @@ export default { "Steel": 10.0 } }, + "ItemMiningCharge": { + "tier": "TierOne", + "time": 60.0, + "energy": 6000.0, + "temperature": { + "start": 1.0, + "stop": 80000.0, + "is_valid": false + }, + "pressure": { + "start": 0.0, + "stop": 1000000.0, + "is_valid": false + }, + "required_mix": { + "rule": 0, + "is_any": true, + "is_any_to_remove": false, + "reagents": {} + }, + "count_types": 3, + "reagents": { + "Gold": 1.0, + "Iron": 1.0, + "Silicon": 5.0 + } + }, "ItemMiningDrill": { "tier": "TierOne", "time": 5.0, @@ -54974,9 +55934,9 @@ export default { } }, "ItemRemoteDetonator": { - "tier": "TierOne", - "time": 4.5, - "energy": 500.0, + "tier": "TierTwo", + "time": 30.0, + "energy": 1500.0, "temperature": { "start": 1.0, "stop": 80000.0, @@ -54993,10 +55953,11 @@ export default { "is_any_to_remove": false, "reagents": {} }, - "count_types": 2, + "count_types": 3, "reagents": { - "Gold": 1.0, - "Iron": 3.0 + "Copper": 5.0, + "Solder": 5.0, + "Steel": 5.0 } }, "ItemReusableFireExtinguisher": { @@ -56833,7 +57794,7 @@ export default { "prefab_name": "StructureValve", "prefab_hash": -692036078, "desc": "", - "name": "Valve" + "name": "Valve (Gas)" }, "structure": { "small_grid": true @@ -58719,7 +59680,7 @@ export default { } }, "StructureWaterPurifier": { - "templateType": "StructureLogicDevice", + "templateType": "StructureLogicDeviceConsumer", "prefab": { "prefab_name": "StructureWaterPurifier", "prefab_hash": 887383294, @@ -58786,6 +59747,12 @@ export default { "has_on_off_state": true, "has_open_state": false, "has_reagents": false + }, + "consumer_info": { + "consumed_resources": [ + "ItemCharcoal" + ], + "processed_reagents": [] } }, "StructureWaterWallCooler": { @@ -58959,62 +59926,6 @@ export default { "has_reagents": false } }, - "StructureWindowShutter": { - "templateType": "StructureLogicDevice", - "prefab": { - "prefab_name": "StructureWindowShutter", - "prefab_hash": 2056377335, - "desc": "For those special, private moments, a window that can be closed to prying eyes. \n \nWhen closed, has the heat transfer characteristics of a basic wall. Requires power, and can be connected to logic systems.", - "name": "Window Shutter" - }, - "structure": { - "small_grid": true - }, - "logic": { - "logic_slot_types": {}, - "logic_types": { - "Power": "Read", - "Open": "ReadWrite", - "Mode": "ReadWrite", - "Error": "Read", - "Setting": "ReadWrite", - "On": "ReadWrite", - "RequiredPower": "Read", - "Idle": "Read", - "PrefabHash": "Read", - "ReferenceId": "Read", - "NameHash": "Read" - }, - "modes": { - "0": "Operate", - "1": "Logic" - }, - "transmission_receiver": false, - "wireless_logic": false, - "circuit_holder": false - }, - "slots": [], - "device": { - "connection_list": [ - { - "typ": "Data", - "role": "None" - }, - { - "typ": "Power", - "role": "None" - } - ], - "has_activate_state": false, - "has_atmosphere": false, - "has_color_state": false, - "has_lock_state": false, - "has_mode_state": true, - "has_on_off_state": true, - "has_open_state": true, - "has_reagents": false - } - }, "ToolPrinterMod": { "templateType": "Item", "prefab": { @@ -59773,7 +60684,7 @@ export default { "OccupantHash": { "value": 2, "deprecated": false, - "description": "returns the has of the current occupant, the unique identifier of the thing" + "description": "returns the hash of the current occupant, the unique identifier of the thing" }, "Occupied": { "value": 1, @@ -59865,6 +60776,11 @@ export default { "deprecated": false, "description": "The angular discrepancy between the telescope's current orientation and the target. Indicates how 'off target' the telescope is. Returns NaN when no target." }, + "Altitude": { + "value": 269, + "deprecated": false, + "description": "The altitude that the rocket above the planet's surface. -1 if the rocket is in space." + }, "Apex": { "value": 238, "deprecated": false, @@ -61525,7 +62441,7 @@ export default { "OccupantHash": { "value": 2, "deprecated": false, - "description": "returns the has of the current occupant, the unique identifier of the thing" + "description": "returns the hash of the current occupant, the unique identifier of the thing" }, "Occupied": { "value": 1, @@ -61617,6 +62533,11 @@ export default { "deprecated": false, "description": "The angular discrepancy between the telescope's current orientation and the target. Indicates how 'off target' the telescope is. Returns NaN when no target." }, + "Altitude": { + "value": 269, + "deprecated": false, + "description": "The altitude that the rocket above the planet's surface. -1 if the rocket is in space." + }, "Apex": { "value": 238, "deprecated": false, @@ -63032,6 +63953,11 @@ export default { "deprecated": false, "description": "" }, + "Low": { + "value": 1, + "deprecated": false, + "description": "" + }, "Max": { "value": 4, "deprecated": false, @@ -63046,11 +63972,6 @@ export default { "value": 0, "deprecated": false, "description": "" - }, - "Optimal": { - "value": 1, - "deprecated": false, - "description": "" } } }, @@ -63182,6 +64103,11 @@ export default { "deprecated": false, "description": "" }, + "Crate": { + "value": 40, + "deprecated": false, + "description": "" + }, "CreditCard": { "value": 28, "deprecated": false, @@ -63282,6 +64208,11 @@ export default { "deprecated": false, "description": "" }, + "Portables": { + "value": 41, + "deprecated": false, + "description": "" + }, "ProgrammableChip": { "value": 26, "deprecated": false, @@ -63729,6 +64660,7 @@ export default { "prefabsByHash": { "-2140672772": "ItemKitGroundTelescope", "-2138748650": "StructureSmallSatelliteDish", + "-2131782367": "StructureRobotArmDoor", "-2128896573": "StructureStairwellBackRight", "-2127086069": "StructureBench2", "-2126113312": "ItemLiquidPipeValve", @@ -63750,6 +64682,7 @@ export default { "-2085885850": "DynamicGPR", "-2083426457": "UniformCommander", "-2082355173": "StructureWindTurbine", + "-2078371660": "StructureCompositeWindowShutterController", "-2076086215": "StructureInsulatedPipeTJunction", "-2073202179": "ItemPureIcePollutedWater", "-2072792175": "RailingIndustrial02", @@ -63833,6 +64766,7 @@ export default { "-1826855889": "ItemKitWall", "-1826023284": "ItemWreckageAirConditioner1", "-1821571150": "ItemKitStirlingEngine", + "-1818718810": "StructureRoboticArmDock", "-1814939203": "StructureGasUmbilicalMale", "-1812330717": "StructureSleeperRight", "-1808154199": "StructureManualHatch", @@ -63845,6 +64779,7 @@ export default { "-1794932560": "StructureOverheadShortCornerLocker", "-1792787349": "ItemCableAnalyser", "-1788929869": "Landingpad_LiquidConnectorOutwardPiece", + "-1785844184": "StructureRoboticArmRailStraight", "-1785673561": "StructurePipeCorner", "-1776897113": "ItemKitSensor", "-1773192190": "ItemReusableFireExtinguisher", @@ -63977,6 +64912,7 @@ export default { "-1332682164": "ItemKitSmallDirectHeatExchanger", "-1330388999": "AccessCardBlack", "-1326019434": "StructureLogicWriter", + "-1323992709": "StructureRoboticArmRailCorner", "-1321250424": "StructureLogicWriterSwitch", "-1309433134": "StructureWallIron04", "-1306628937": "ItemPureIceLiquidVolatiles", @@ -64005,6 +64941,7 @@ export default { "-1240951678": "StructureFrameIron", "-1234745580": "ItemDirtyOre", "-1230658883": "StructureLargeDirectHeatExchangeGastoGas", + "-1228287398": "ItemKitRoboticArm", "-1219128491": "ItemSensorProcessingUnitOreScanner", "-1218579821": "StructurePictureFrameThickPortraitSmall", "-1217998945": "ItemGasFilterOxygenL", @@ -64082,6 +65019,7 @@ export default { "-976273247": "Landingpad_StraightPiece01", "-975966237": "StructureMediumRadiator", "-971920158": "ItemDynamicScrubber", + "-971586619": "ItemWaterBottlePackage", "-965741795": "StructureCondensationValve", "-958884053": "StructureChuteUmbilicalMale", "-945806652": "ItemKitElevator", @@ -64137,7 +65075,6 @@ export default { "-784733231": "ItemKitWallGeometry", "-783387184": "StructureInsulatedPipeCrossJunction4", "-782951720": "StructurePowerConnector", - "-782453061": "StructureLiquidPipeOneWayValve", "-776581573": "StructureWallLargePanelArrow", "-775128944": "StructureShower", "-772542081": "ItemChemLightBlue", @@ -64146,6 +65083,7 @@ export default { "-767597887": "ItemPipeAnalyizer", "-761772413": "StructureBatteryChargerSmall", "-756587791": "StructureWaterBottleFillerPowered", + "-753675589": "ItemKitRobotArmDoor", "-749191906": "AppliancePackagingMachine", "-744098481": "ItemIntegratedCircuit10", "-743968726": "ItemLabeller", @@ -64205,6 +65143,7 @@ export default { "-525810132": "ItemChemLightRed", "-524546923": "ItemKitWallIron", "-524289310": "ItemEggCarton", + "-523832822": "StructurePipeLiquidOneWayValveLever", "-517628750": "StructureWaterDigitalValve", "-507770416": "StructureSmallDirectHeatExchangeLiquidtoLiquid", "-504717121": "ItemWirelessBatteryCellExtraLarge", @@ -64212,6 +65151,7 @@ export default { "-498464883": "ItemSprayCanBlue", "-491247370": "RespawnPointWallMounted", "-487378546": "ItemIronSheets", + "-475746988": "StructureReinforcedWall", "-472094806": "ItemGasCanisterVolatiles", "-466050668": "ItemCableCoil", "-465741100": "StructureToolManufactory", @@ -64221,12 +65161,15 @@ export default { "-454028979": "StructureLiquidVolumePump", "-453039435": "ItemKitTransformer", "-443130773": "StructureVendingMachine", + "-441759975": "ItemKitLinearRail", "-419758574": "StructurePipeHeater", "-417629293": "StructurePipeCrossJunction4", "-415420281": "StructureLadder", "-412551656": "ItemHardJetpack", "-412104504": "CircuitboardCameraDisplay", + "-405593895": "StructureComputerUpright", "-404336834": "ItemCopperIngot", + "-401648353": "ItemCerealBarBox", "-400696159": "ReagentColorOrange", "-400115994": "StructureBattery", "-399883995": "StructurePipeRadiatorFlat", @@ -64266,6 +65209,7 @@ export default { "-291862981": "StructureSmallTableThickSingle", "-290196476": "ItemSiliconIngot", "-287495560": "StructureLiquidPipeHeater", + "-267108827": "StructureRoboticArmRailInnerCorner", "-261575861": "ItemChocolateCake", "-260316435": "StructureStirlingEngine", "-259357734": "StructureCompositeCladdingRounded", @@ -64312,6 +65256,7 @@ export default { "-82087220": "DynamicGenerator", "-81376085": "ItemFlowerRed", "-78099334": "KitchenTableSimpleShort", + "-75205276": "ItemCerealBarBag", "-73796547": "ImGuiCircuitboardAirlockControl", "-72748982": "StructureInsulatedPipeLiquidCrossJunction6", "-69685069": "StructureCompositeCladdingAngledCorner", @@ -64324,6 +65269,7 @@ export default { "-38898376": "ItemPipeCowl", "-37454456": "StructureStairwellFrontLeft", "-37302931": "StructureWallPaddedWindowThin", + "-33470826": "StructureRoboticArmRailOuterCorner", "-31273349": "StructureInsulatedTankConnector", "-27284803": "ItemKitInsulatedPipeUtility", "-21970188": "DynamicLight", @@ -64469,6 +65415,7 @@ export default { "377745425": "ItemKitGasGenerator", "378084505": "StructureBlocker", "379750958": "StructurePressureFedLiquidEngine", + "384478267": "ItemMiningPackage", "386754635": "ItemPureIceNitrous", "386820253": "StructureWallSmallPanelsMonoChrome", "388774906": "ItemMKIIDuctTape", @@ -64512,6 +65459,7 @@ export default { "502280180": "ItemElectrumIngot", "502555944": "MotherboardLogic", "505924160": "StructureStairwellBackLeft", + "509629504": "ItemResidentialPackage", "513258369": "ItemKitAccessBridge", "518925193": "StructureRocketTransformerSmall", "519913639": "DynamicAirConditioner", @@ -64576,6 +65524,7 @@ export default { "782529714": "StructureWallArchTwoTone", "789015045": "ItemAuthoringTool", "789494694": "WeaponEnergy", + "791407452": "StructureCompositeWindowShutterConnector", "791746840": "ItemCerealBar", "792686502": "StructureLargeDirectHeatExchangeLiquidtoLiquid", "797794350": "StructureLightLong", @@ -64598,6 +65547,7 @@ export default { "847461335": "StructureInteriorDoorPadded", "849148192": "ItemKitRecycler", "850558385": "StructureCompositeCladdingAngledCornerLong", + "851103794": "ItemEmergencySuppliesBox", "851290561": "ItemPlantEndothermic_Genepool1", "855694771": "CircuitboardDoorControl", "856108234": "ItemCrowbar", @@ -64728,6 +65678,7 @@ export default { "1282191063": "StructureTurbineGenerator", "1286441942": "StructurePipeIgniter", "1287324802": "StructureWallIron", + "1289581593": "StructurePipeOneWayValveLever", "1289723966": "ItemSprayGun", "1293995736": "ItemKitSolidGenerator", "1298920475": "StructureAccessBridge", @@ -64775,6 +65726,7 @@ export default { "1443059329": "StructureCryoTubeHorizontal", "1452100517": "StructureInsulatedInLineTankLiquid1x2", "1453961898": "ItemKitPassiveLargeRadiatorLiquid", + "1459105919": "ItemPortablesPackage", "1459985302": "ItemKitReinforcedWindows", "1464424921": "ItemWreckageStructureWeatherStation002", "1464854517": "StructureHydroponicsTray", @@ -64782,6 +65734,8 @@ export default { "1468249454": "StructureOverheadShortLocker", "1470787934": "ItemMiningBeltMKII", "1473807953": "StructureTorpedoRack", + "1476318823": "ItemWaterBottleBag", + "1485675617": "ItemInsulatedCanisterPackage", "1485834215": "StructureWallIron02", "1492930217": "StructureWallLargePanel", "1512322581": "ItemKitLogicCircuit", @@ -64803,7 +65757,7 @@ export default { "1574321230": "StructureCompositeWall03", "1574688481": "ItemKitRespawnPointWallMounted", "1579842814": "ItemHastelloyIngot", - "1580412404": "StructurePipeOneWayValve", + "1580592998": "StructureCompositeWindowShutter", "1585641623": "StructureStackerReverse", "1587787610": "ItemKitEvaporationChamber", "1588896491": "ItemGlassSheets", @@ -64867,6 +65821,7 @@ export default { "1791306431": "ItemEmergencyEvaSuit", "1794588890": "StructureWallArchCornerRound", "1800622698": "ItemCoffeeMug", + "1800701885": "StructureRoboticArmRailStraightStop", "1811979158": "StructureAngledBench", "1812364811": "StructurePassiveLiquidDrain", "1817007843": "ItemKitLandingPadAtmos", @@ -64917,12 +65872,14 @@ export default { "1949076595": "ItemLightSword", "1951126161": "ItemKitLiquidRegulator", "1951525046": "StructureCompositeCladdingRoundedCorner", + "1957571043": "StructureChuteExportBin", "1959564765": "ItemGasFilterPollutantsL", "1960952220": "ItemKitSmallSatelliteDish", "1968102968": "StructureSolarPanelFlat", "1968371847": "StructureDrinkingFountain", "1969189000": "ItemJetpackBasic", "1969312177": "ItemKitEngineMedium", + "1974053060": "StructureRoboticArmRailCornerStop", "1979212240": "StructureWallGeometryCorner", "1981698201": "StructureInteriorDoorPaddedThin", "1986658780": "StructureWaterBottleFillerPoweredBottom", @@ -64954,7 +65911,6 @@ export default { "2043318949": "PortableSolarPanel", "2044798572": "ItemMushroom", "2049879875": "StructureStairwellNoDoors", - "2056377335": "StructureWindowShutter", "2057179799": "ItemKitHydroponicStation", "2060134443": "ItemCableCoilHeavy", "2060648791": "StructureElevatorLevelIndustrial", @@ -65110,6 +66066,7 @@ export default { "StructureChuteDigitalFlipFlopSplitterRight", "StructureChuteDigitalValveLeft", "StructureChuteDigitalValveRight", + "StructureChuteExportBin", "StructureChuteFlipFlopSplitter", "StructureChuteInlet", "StructureChuteJunction", @@ -65154,7 +66111,11 @@ export default { "StructureCompositeWall04", "StructureCompositeWindow", "StructureCompositeWindowIron", + "StructureCompositeWindowShutter", + "StructureCompositeWindowShutterConnector", + "StructureCompositeWindowShutterController", "StructureComputer", + "StructureComputerUpright", "StructureCondensationChamber", "StructureCondensationValve", "StructureConsole", @@ -65276,7 +66237,6 @@ export default { "StructureLiquidDrain", "StructureLiquidPipeAnalyzer", "StructureLiquidPipeHeater", - "StructureLiquidPipeOneWayValve", "StructureLiquidPipeRadiator", "StructureLiquidPressureRegulator", "StructureLiquidTankBig", @@ -65371,10 +66331,11 @@ export default { "StructurePipeLiquidCrossJunction4", "StructurePipeLiquidCrossJunction5", "StructurePipeLiquidCrossJunction6", + "StructurePipeLiquidOneWayValveLever", "StructurePipeLiquidStraight", "StructurePipeLiquidTJunction", "StructurePipeMeter", - "StructurePipeOneWayValve", + "StructurePipeOneWayValveLever", "StructurePipeOrgan", "StructurePipeRadiator", "StructurePipeRadiatorFlat", @@ -65409,8 +66370,17 @@ export default { "StructureRefrigeratedVendingMachine", "StructureReinforcedCompositeWindow", "StructureReinforcedCompositeWindowSteel", + "StructureReinforcedWall", "StructureReinforcedWallPaddedWindow", "StructureReinforcedWallPaddedWindowThin", + "StructureRobotArmDoor", + "StructureRoboticArmDock", + "StructureRoboticArmRailCorner", + "StructureRoboticArmRailCornerStop", + "StructureRoboticArmRailInnerCorner", + "StructureRoboticArmRailOuterCorner", + "StructureRoboticArmRailStraight", + "StructureRoboticArmRailStraightStop", "StructureRocketAvionics", "StructureRocketCelestialTracker", "StructureRocketCircuitHousing", @@ -65558,8 +66528,7 @@ export default { "StructureWaterPurifier", "StructureWaterWallCooler", "StructureWeatherStation", - "StructureWindTurbine", - "StructureWindowShutter" + "StructureWindTurbine" ], "devices": [ "CompositeRollCover", @@ -65632,6 +66601,7 @@ export default { "StructureChuteDigitalFlipFlopSplitterRight", "StructureChuteDigitalValveLeft", "StructureChuteDigitalValveRight", + "StructureChuteExportBin", "StructureChuteInlet", "StructureChuteOutlet", "StructureChuteUmbilicalFemale", @@ -65640,7 +66610,9 @@ export default { "StructureCircuitHousing", "StructureCombustionCentrifuge", "StructureCompositeDoor", + "StructureCompositeWindowShutterController", "StructureComputer", + "StructureComputerUpright", "StructureCondensationChamber", "StructureCondensationValve", "StructureConsole", @@ -65717,7 +66689,6 @@ export default { "StructureLiquidDrain", "StructureLiquidPipeAnalyzer", "StructureLiquidPipeHeater", - "StructureLiquidPipeOneWayValve", "StructureLiquidPipeRadiator", "StructureLiquidPressureRegulator", "StructureLiquidTankBig", @@ -65780,8 +66751,9 @@ export default { "StructurePipeHeater", "StructurePipeIgniter", "StructurePipeLabel", + "StructurePipeLiquidOneWayValveLever", "StructurePipeMeter", - "StructurePipeOneWayValve", + "StructurePipeOneWayValveLever", "StructurePipeRadiator", "StructurePipeRadiatorFlat", "StructurePipeRadiatorFlatLiquid", @@ -65807,6 +66779,8 @@ export default { "StructurePurgeValve", "StructureRecycler", "StructureRefrigeratedVendingMachine", + "StructureRobotArmDoor", + "StructureRoboticArmDock", "StructureRocketAvionics", "StructureRocketCelestialTracker", "StructureRocketCircuitHousing", @@ -65885,8 +66859,7 @@ export default { "StructureWaterPurifier", "StructureWaterWallCooler", "StructureWeatherStation", - "StructureWindTurbine", - "StructureWindowShutter" + "StructureWindTurbine" ], "items": [ "AccessCardBlack", @@ -66012,6 +66985,8 @@ export default { "ItemCannedPowderedEggs", "ItemCannedRicePudding", "ItemCerealBar", + "ItemCerealBarBag", + "ItemCerealBarBox", "ItemCharcoal", "ItemChemLightBlue", "ItemChemLightGreen", @@ -66061,6 +67036,7 @@ export default { "ItemEmergencyPickaxe", "ItemEmergencyScrewdriver", "ItemEmergencySpaceHelmet", + "ItemEmergencySuppliesBox", "ItemEmergencyToolBelt", "ItemEmergencyWireCutters", "ItemEmergencyWrench", @@ -66140,6 +67116,7 @@ export default { "ItemIce", "ItemIgniter", "ItemInconelIngot", + "ItemInsulatedCanisterPackage", "ItemInsulation", "ItemIntegratedCircuit10", "ItemInvarIngot", @@ -66227,6 +67204,7 @@ export default { "ItemKitLargeSatelliteDish", "ItemKitLaunchMount", "ItemKitLaunchTower", + "ItemKitLinearRail", "ItemKitLiquidRegulator", "ItemKitLiquidTank", "ItemKitLiquidTankInsulated", @@ -66267,6 +67245,8 @@ export default { "ItemKitReinforcedWindows", "ItemKitResearchMachine", "ItemKitRespawnPointWallMounted", + "ItemKitRobotArmDoor", + "ItemKitRoboticArm", "ItemKitRocketAvionics", "ItemKitRocketBattery", "ItemKitRocketCargoStorage", @@ -66357,6 +67337,7 @@ export default { "ItemMiningDrill", "ItemMiningDrillHeavy", "ItemMiningDrillPneumatic", + "ItemMiningPackage", "ItemMkIIToolbelt", "ItemMuffin", "ItemMushroom", @@ -66393,6 +67374,7 @@ export default { "ItemPlantThermogenic_Genepool1", "ItemPlantThermogenic_Genepool2", "ItemPlasticSheets", + "ItemPortablesPackage", "ItemPotato", "ItemPotatoBaked", "ItemPowerConnector", @@ -66420,6 +67402,7 @@ export default { "ItemRTGSurvival", "ItemReagentMix", "ItemRemoteDetonator", + "ItemResidentialPackage", "ItemReusableFireExtinguisher", "ItemRice", "ItemRoadFlare", @@ -66489,6 +67472,8 @@ export default { "ItemWallLight", "ItemWaspaloyIngot", "ItemWaterBottle", + "ItemWaterBottleBag", + "ItemWaterBottlePackage", "ItemWaterPipeDigitalValve", "ItemWaterPipeMeter", "ItemWaterWallCooler", @@ -66636,4 +67621,4 @@ export default { "StructureNitrolyzer", "StructureRocketCircuitHousing" ] -} as const +} as const \ No newline at end of file diff --git a/www/src/ts/virtualMachine/registers.ts b/www/src/ts/virtualMachine/registers.ts index eb60df6..e664547 100644 --- a/www/src/ts/virtualMachine/registers.ts +++ b/www/src/ts/virtualMachine/registers.ts @@ -1,4 +1,4 @@ -import { html, css } from "lit"; +import { html, css, nothing } from "lit"; import { customElement } from "lit/decorators.js"; import { BaseElement, defaultCss } from "components"; import { VMActiveICMixin } from "virtualMachine/baseDevice"; @@ -6,6 +6,7 @@ import { VMActiveICMixin } from "virtualMachine/baseDevice"; import { RegisterSpec } from "ic10emu_wasm"; import SlInput from "@shoelace-style/shoelace/dist/components/input/input.js"; import { displayNumber, parseNumber } from "utils"; +import { computed, Signal, watch } from "@lit-labs/preact-signals"; @customElement("vm-ic-registers") export class VMICRegisters extends VMActiveICMixin(BaseElement) { @@ -40,12 +41,12 @@ export class VMICRegisters extends VMActiveICMixin(BaseElement) { constructor() { super(); - this.subscribe("ic", "active-ic") + this.subscribe("active-ic") } protected render() { - const registerAliases: [string, number][] = - [...(Array.from(this.aliases?.entries() ?? []))].flatMap( + const registerAliases: Signal<[string, number][]> = computed(() => { + return [...(Array.from(this.objectSignals.aliases.value?.entries() ?? []))].flatMap( ([alias, target]) => { if ("RegisterSpec" in target && target.RegisterSpec.indirection === 0) { return [[alias, target.RegisterSpec.target]] as [string, number][]; @@ -54,33 +55,49 @@ export class VMICRegisters extends VMActiveICMixin(BaseElement) { } } ).concat(VMICRegisters.defaultAliases); + }); + + const registerHtml = this.objectSignals?.registers.peek().map((val, index) => { + const aliases = computed(() => { + return registerAliases.value + .filter(([_alias, target]) => index === target) + .map(([alias, _target]) => alias); + }); + const aliasesList = computed(() => { + return aliases.value.join(", "); + }); + const aliasesText = computed(() => { + return aliasesList.value || "None"; + }); + const valDisplay = computed(() => { + const val = this.objectSignals.registers.value[index]; + return displayNumber(val); + }); + return html` + +
+ Register r${index} Aliases: + ${watch(aliasesText)} +
+ + r${index} + ${watch(aliasesList)} + +
+ `; + }) ?? nothing; + return html`
- ${this.registers?.map((val, index) => { - const aliases = registerAliases - .filter(([_alias, target]) => index === target) - .map(([alias, _target]) => alias); - return html` - -
- Register r${index} Aliases: - ${aliases.join(", ") || "None"} -
- - r${index} - ${aliases.join(", ")} - -
- `; - })} + ${registerHtml}
`; diff --git a/www/src/ts/virtualMachine/stack.ts b/www/src/ts/virtualMachine/stack.ts index 6f96199..6dd6e15 100644 --- a/www/src/ts/virtualMachine/stack.ts +++ b/www/src/ts/virtualMachine/stack.ts @@ -1,10 +1,11 @@ -import { html, css } from "lit"; +import { html, css, nothing } from "lit"; import { customElement } from "lit/decorators.js"; import { BaseElement, defaultCss } from "components"; import { VMActiveICMixin } from "virtualMachine/baseDevice"; import SlInput from "@shoelace-style/shoelace/dist/components/input/input.js"; import { displayNumber, parseNumber } from "utils"; +import { computed, watch } from "@lit-labs/preact-signals"; @customElement("vm-ic-stack") export class VMICStack extends VMActiveICMixin(BaseElement) { @@ -37,35 +38,49 @@ export class VMICStack extends VMActiveICMixin(BaseElement) { constructor() { super(); - this.subscribe("ic", "active-ic") + this.subscribe("active-ic") } protected render() { - const sp = this.registers != null ? this.registers[16] : 0; + const sp = computed(() => { + return this.objectSignals.registers.value != null ? this.objectSignals.registers.value[16] : 0; + }); + + const memoryHtml = this.objectSignals?.memory.peek()?.map((val, index) => { + const content = computed(() => { + return sp.value === index ? html`Stack Pointer` : nothing; + }); + const pointerClass = computed(() => { + return sp.value === index ? "stack-pointer" : nothing; + }); + const displayVal = computed(() => { + return displayNumber(this.objectSignals.memory.value[index]); + }); + + return html` + +
+ ${watch(content)} + Address ${index} +
+ + ${index} + +
+ `; + }) ?? nothing; return html`
- ${this.memory?.map((val, index) => { - return html` - -
- ${sp === index ? html`Stack Pointer` : ""} - Address ${index} -
- - ${index} - -
- `; - })} + ${memoryHtml}
`; diff --git a/www/src/ts/virtualMachine/vmWorker.ts b/www/src/ts/virtualMachine/vmWorker.ts index 6f34aaa..9f38b0b 100644 --- a/www/src/ts/virtualMachine/vmWorker.ts +++ b/www/src/ts/virtualMachine/vmWorker.ts @@ -6,24 +6,24 @@ import type { import * as Comlink from "comlink"; import prefabDatabase from "./prefabDatabase"; -import { parseNumber } from "utils"; +import { comlinkSpecialJsonTransferHandler, parseNumber } from "utils"; +Comlink.transferHandlers.set("SpecialJson", comlinkSpecialJsonTransferHandler); console.info("Processing Json prefab Database ", prefabDatabase); const vm: VMRef = init(); -const template_database = Object.fromEntries( +const start_time = performance.now(); +const template_database = new Map( Object.entries(prefabDatabase.prefabsByHash).map(([hash, prefabName]) => [ parseInt(hash), prefabDatabase.prefabs[prefabName], ]), ) as TemplateDatabase; - +console.info("Loading Prefab Template Database into VM", template_database); try { - console.info("Loading Prefab Template Database into VM", template_database); - const start_time = performance.now(); // vm.importTemplateDatabase(template_database); vm.importTemplateDatabase(template_database); const now = performance.now(); diff --git a/xtask/src/generate/database.rs b/xtask/src/generate/database.rs index ff750c1..205fa7d 100644 --- a/xtask/src/generate/database.rs +++ b/xtask/src/generate/database.rs @@ -191,7 +191,7 @@ pub fn generate_database( .join("www") .join("src") .join("ts") - .join("virtual_machine"); + .join("virtualMachine"); if !data_path.exists() { std::fs::create_dir(&data_path)?; } @@ -860,7 +860,7 @@ fn slot_inserts_to_info(slots: &[stationpedia::SlotInsert]) -> Vec { typ: slot .slot_type .parse() - .unwrap_or_else(|err| panic!("faild to parse slot class: {err}")), + .unwrap_or_else(|err| panic!("failed to parse slot class: {err}")), }) .collect() } @@ -891,7 +891,7 @@ pub struct ObjectDatabase { impl From<&stationpedia::SuitInfo> for SuitInfo { fn from(value: &stationpedia::SuitInfo) -> Self { SuitInfo { - hygine_reduction_multiplier: value.hygine_reduction_multiplier, + hygiene_reduction_multiplier: value.hygiene_reduction_multiplier, waste_max_pressure: value.waste_max_pressure, } } @@ -979,11 +979,17 @@ impl From<&stationpedia::Item> for ItemInfo { slot_class: item .slot_class .parse() - .unwrap_or_else(|err| panic!("failed to parse slot class: {err}")), + .unwrap_or_else(|err| { + let slot_class = &item.slot_class; + panic!("failed to parse slot class `{slot_class}`: {err}"); + }), sorting_class: item .sorting_class .parse() - .unwrap_or_else(|err| panic!("failed to parse sorting class: {err}")), + .unwrap_or_else(|err| { + let sorting_class = &item.sorting_class; + panic!("failed to parse sorting class `{sorting_class}`: {err}"); + }), } } } @@ -997,10 +1003,10 @@ impl From<&stationpedia::Device> for DeviceInfo { .map(|(typ, role)| ConnectionInfo { typ: typ .parse() - .unwrap_or_else(|err| panic!("failed to parse connection type: {err}")), + .unwrap_or_else(|err| panic!("failed to parse connection type `{typ}`: {err}")), role: role .parse() - .unwrap_or_else(|err| panic!("failed to parse connection role: {err}")), + .unwrap_or_else(|err| panic!("failed to parse connection role `{role}`: {err}")), }) .collect(), device_pins_length: value.devices_length, @@ -1111,7 +1117,7 @@ impl From<&stationpedia::Memory> for MemoryInfo { impl From<&stationpedia::ResourceConsumer> for ConsumerInfo { fn from(value: &stationpedia::ResourceConsumer) -> Self { ConsumerInfo { - consumed_resouces: value.consumed_resources.clone(), + consumed_resources: value.consumed_resources.clone(), processed_reagents: value.processed_reagents.clone(), } } diff --git a/xtask/src/stationpedia.rs b/xtask/src/stationpedia.rs index ab3bb2d..e20cc2c 100644 --- a/xtask/src/stationpedia.rs +++ b/xtask/src/stationpedia.rs @@ -91,7 +91,7 @@ pub struct Page { #[serde(rename = "SourceCode", default)] pub source_code: bool, #[serde(rename = "Chargeable")] - pub chargeable: Option, + pub chargeable: Option, #[serde(rename = "ResourceConsumer")] pub resource_consumer: Option, #[serde(rename = "InternalAtmosphere")] @@ -257,8 +257,8 @@ pub struct Item { #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct SuitInfo { - #[serde(rename = "HygineReductionMultiplier")] - pub hygine_reduction_multiplier: f32, + #[serde(rename = "HygieneReductionMultiplier")] + pub hygiene_reduction_multiplier: f32, #[serde(rename = "WasteMaxPressure")] pub waste_max_pressure: f32, } @@ -269,9 +269,9 @@ pub struct Recipe { pub creator_prefab_name: String, #[serde(rename = "TierName")] pub tier_name: String, - #[serde(rename = "Time")] + #[serde(rename = "Time", default)] pub time: f64, - #[serde(rename = "Energy")] + #[serde(rename = "Energy", default)] pub energy: f64, #[serde(rename = "Temperature")] pub temperature: RecipeTemperature, @@ -279,7 +279,7 @@ pub struct Recipe { pub pressure: RecipePressure, #[serde(rename = "RequiredMix")] pub required_mix: RecipeGasMix, - #[serde(rename = "CountTypes")] + #[serde(rename = "CountTypes", default)] pub count_types: i64, #[serde(flatten)] pub reagents: indexmap::IndexMap, @@ -354,7 +354,7 @@ pub struct Fabricator { } #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -pub struct Chargable { +pub struct Chargeable { #[serde(rename = "PowerMaximum")] pub power_maximum: f32, }