Files
ic10emu/stationeers_data/src/database/prefab_map.rs

53659 lines
2.6 MiB

// =================================================
// !! <-----> DO NOT MODIFY <-----> !!
//
// This module was automatically generated by an
// xtask
//
// run
//
// `cargo xtask generate -m database`
//
// from the workspace to regenerate
//
// =================================================
use crate::enums::script::*;
use crate::enums::basic::*;
use crate::enums::{MemoryAccess, ConnectionType, ConnectionRole, MachineTier};
use crate::templates::*;
pub fn build_prefab_database() -> std::collections::BTreeMap<
i32,
crate::templates::ObjectTemplate,
> {
#[allow(clippy::unreadable_literal)]
let mut map: std::collections::BTreeMap<i32, crate::templates::ObjectTemplate> = std::collections::BTreeMap::new();
map.insert(
-1330388999i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardBlack".into(),
prefab_hash: -1330388999i32,
desc: "".into(),
name: "Access Card (Black)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1411327657i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardBlue".into(),
prefab_hash: -1411327657i32,
desc: "".into(),
name: "Access Card (Blue)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1412428165i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardBrown".into(),
prefab_hash: 1412428165i32,
desc: "".into(),
name: "Access Card (Brown)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1339479035i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardGray".into(),
prefab_hash: -1339479035i32,
desc: "".into(),
name: "Access Card (Gray)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-374567952i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardGreen".into(),
prefab_hash: -374567952i32,
desc: "".into(),
name: "Access Card (Green)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
337035771i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardKhaki".into(),
prefab_hash: 337035771i32,
desc: "".into(),
name: "Access Card (Khaki)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-332896929i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardOrange".into(),
prefab_hash: -332896929i32,
desc: "".into(),
name: "Access Card (Orange)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
431317557i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardPink".into(),
prefab_hash: 431317557i32,
desc: "".into(),
name: "Access Card (Pink)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
459843265i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardPurple".into(),
prefab_hash: 459843265i32,
desc: "".into(),
name: "Access Card (Purple)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1713748313i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardRed".into(),
prefab_hash: -1713748313i32,
desc: "".into(),
name: "Access Card (Red)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2079959157i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardWhite".into(),
prefab_hash: 2079959157i32,
desc: "".into(),
name: "Access Card (White)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
568932536i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AccessCardYellow".into(),
prefab_hash: 568932536i32,
desc: "".into(),
name: "Access Card (Yellow)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::AccessCard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1365789392i32,
ItemConsumerTemplate {
templateType: "ItemConsumer".into(),
prefab: PrefabInfo {
prefab_name: "ApplianceChemistryStation".into(),
prefab_hash: 1365789392i32,
desc: "".into(),
name: "Chemistry Station".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Output".into(), typ : Class::None }]
.into_iter()
.collect(),
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemCharcoal".into(), "ItemCobaltOre".into(), "ItemFern".into(),
"ItemSilverIngot".into(), "ItemSilverOre".into(), "ItemSoyOil".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
}
.into(),
);
map.insert(
-1683849799i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ApplianceDeskLampLeft".into(),
prefab_hash: -1683849799i32,
desc: "".into(),
name: "Appliance Desk Lamp Left".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1174360780i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ApplianceDeskLampRight".into(),
prefab_hash: 1174360780i32,
desc: "".into(),
name: "Appliance Desk Lamp Right".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1136173965i32,
ItemConsumerTemplate {
templateType: "ItemConsumer".into(),
prefab: PrefabInfo {
prefab_name: "ApplianceMicrowave".into(),
prefab_hash: -1136173965i32,
desc: "While countless \'better\' ways of cooking <link=FoodPage><color=#0080FFFF>Food</color></link> have been invented in the last few hundred years, few are as durable or easy to fabricate as the OK-Zoomer microwave. Licensed from <link=Xigo><color=#0080FFFF>Xigo</color></link>, the plans are based on a classic model from the mid-21st century, giving it a charmingly retro feel. But don\'t worry, it oscillates <link=GasWater><color=#44AD83>Water</color></link> molecules more than adequately. \nJust bolt it to a <link=ThingStructureBench><color=green>Powered Bench</color></link> using a <link=ThingItemWrench><color=green>Wrench</color></link> to power it, follow the recipe, and you\'re cooking."
.into(),
name: "Microwave".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Output".into(), typ : Class::None }]
.into_iter()
.collect(),
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemCorn".into(), "ItemEgg".into(), "ItemFertilizedEgg".into(),
"ItemFlour".into(), "ItemMilk".into(), "ItemMushroom".into(),
"ItemPotato".into(), "ItemPumpkin".into(), "ItemRice".into(),
"ItemSoybean".into(), "ItemSoyOil".into(), "ItemTomato".into(),
"ItemSugarCane".into(), "ItemCocoaTree".into(), "ItemCocoaPowder"
.into(), "ItemSugar".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
}
.into(),
);
map.insert(
-749191906i32,
ItemConsumerTemplate {
templateType: "ItemConsumer".into(),
prefab: PrefabInfo {
prefab_name: "AppliancePackagingMachine".into(),
prefab_hash: -749191906i32,
desc: "The <link=Xigo><color=#0080FFFF>Xigo</color></link> Cannifier requires <link=ThingItemEmptyCan><color=green>Empty Can</color></link> and cooked <link=OrganicPage><color=#0080FFFF>food</color></link> to create <link=DecayPage><color=#0080FFFF>long-lasting</color></link>, easily stored sustenance. Note that the Cannifier must be bolted to a <link=ThingStructureBench><color=green>Powered Bench</color></link> for power, and only accepts cooked food and tin cans.\n\n<size=120%><b>OPERATION</b></size>\n\n1. Add the correct ingredients to the device via the hopper in the TOP.\n\n2. Close the device using the dropdown handle.\n\n3. Activate the device.\n\n4. Remove canned goods from the outlet in the FRONT.\n\nNote: the Cannifier will flash an error on its activation switch if you attempt to activate it before closing it.\n\n\n "
.into(),
name: "Basic Packaging Machine".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }]
.into_iter()
.collect(),
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemCookedCondensedMilk".into(), "ItemCookedCorn".into(),
"ItemCookedMushroom".into(), "ItemCookedPowderedEggs".into(),
"ItemCookedPumpkin".into(), "ItemCookedRice".into(),
"ItemCookedSoybean".into(), "ItemCookedTomato".into(), "ItemEmptyCan"
.into(), "ItemMilk".into(), "ItemPotatoBaked".into(), "ItemSoyOil"
.into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
}
.into(),
);
map.insert(
-1339716113i32,
ItemConsumerTemplate {
templateType: "ItemConsumer".into(),
prefab: PrefabInfo {
prefab_name: "AppliancePaintMixer".into(),
prefab_hash: -1339716113i32,
desc: "".into(),
name: "Paint Mixer".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Output".into(), typ : Class::Bottle }]
.into_iter()
.collect(),
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemSoyOil".into(), "ReagentColorBlue".into(), "ReagentColorGreen"
.into(), "ReagentColorOrange".into(), "ReagentColorRed".into(),
"ReagentColorYellow".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
}
.into(),
);
map.insert(
-1303038067i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "AppliancePlantGeneticAnalyzer".into(),
prefab_hash: -1303038067i32,
desc: "The Genetic Analyzer can be used to process samples from the <link=ThingItemPlantSampler><color=green>Plant Sampler</color></link>. Once processed, the genetic information of the sampled plant can be viewed by clicking on the search button.\n\nIndividual Gene Value Widgets: \nMost gene values will appear as a sliding bar between a minimum value on the left and a maximum value on the right. The actual value of the gene is in the middle of the bar, in orange.\n\nMultiple Gene Value Widgets: \nFor temperature and pressure ranges, four genes appear on the same widget. The orange values underneath the bar are the minimum and maximum thresholds for growth. Outside of this range, the plant will stop growing and eventually die. The blue values underneath the bar are the minimum and maximum thresholds for ideal growth. Inside of this range, the plant will grow at maximum speed. The white values above the bar are the minimum and maximum achievable values for the growth threshold."
.into(),
name: "Plant Genetic Analyzer".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Input".into(), typ : Class::Tool }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1094868323i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "AppliancePlantGeneticSplicer".into(),
prefab_hash: -1094868323i32,
desc: "The Genetic Splicer can be used to copy a single <link=GeneticsPage><color=#0080FFFF>gene</color></link> from one \'source\' plant to another \'target\' plant of the same type. After copying, the source plant will be destroyed.\n \nTo begin splicing, place a plant or seed bag in the left slot (source) and place another plant or seed bag of the same type in the right slot (target). You can select a gene using the arrow buttons. Close the sliding door and press the green activate button. Once splicing has begun, the device will be locked until the process has finished (which will take approximately twenty minutes). If you want to cancel splicing you can power off the bench or detach the appliance as a last resort."
.into(),
name: "Plant Genetic Splicer".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Source Plant".into(), typ : Class::Plant }, SlotInfo {
name : "Target Plant".into(), typ : Class::Plant }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
871432335i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "AppliancePlantGeneticStabilizer".into(),
prefab_hash: 871432335i32,
desc: "The Genetic Stabilizer can be used to manipulate gene stability on a specific <link=OrganicPage><color=#0080FFFF>Plants</color></link> or <link=OrganicPage><color=#0080FFFF>Seeds</color></link>. It has two modes Stabilize and Destabilize.\nStabilize: Increases all genes stability by 50%.\nDestabilize: Decreases all gene stability by 10% other than a chosen gene which will received decreased stability by 50%.\n "
.into(),
name: "Plant Genetic Stabilizer".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Plant".into(), typ : Class::Plant }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1260918085i32,
ItemConsumerTemplate {
templateType: "ItemConsumer".into(),
prefab: PrefabInfo {
prefab_name: "ApplianceReagentProcessor".into(),
prefab_hash: 1260918085i32,
desc: "Sitting somewhere between a high powered juicer and an alchemist\'s alembic, the <link=Xigo><color=#0080FFFF>Xigo</color></link> reagent processor turns certain raw materials and food items into cooking and crafting ingredients. Indispensible in any space kitchen, just bolt it to the bench, and you\'re ready to go."
.into(),
name: "Reagent Processor".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Input".into(), typ : Class::None }, SlotInfo { name :
"Output".into(), typ : Class::None }
]
.into_iter()
.collect(),
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemWheat".into(), "ItemSugarCane".into(), "ItemCocoaTree".into(),
"ItemSoybean".into(), "ItemFlowerBlue".into(), "ItemFlowerGreen"
.into(), "ItemFlowerOrange".into(), "ItemFlowerRed".into(),
"ItemFlowerYellow".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
}
.into(),
);
map.insert(
142831994i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ApplianceSeedTray".into(),
prefab_hash: 142831994i32,
desc: "The seed tray can hold up to twelve plants or seeds and can be used to facilitate fast experimentation and testing of plant genetics."
.into(),
name: "Appliance Seed Tray".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(),
typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ :
Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant },
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(),
typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ :
Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant },
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Plant".into(), typ : Class::Plant }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1853941363i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ApplianceTabletDock".into(),
prefab_hash: 1853941363i32,
desc: "".into(),
name: "Tablet Dock".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Appliance,
sorting_class: SortingClass::Appliances,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "<N:EN:Tablet>".into(), typ : Class::Tool }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
221058307i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "AutolathePrinterMod".into(),
prefab_hash: 221058307i32,
desc: "Apply to an <link=ThingStructureAutolathe><color=green>Autolathe</color></link> with a <link=ThingItemWeldingTorch><color=green>Welding Torch</color></link> or <link=ThingItemArcWelder><color=green>Arc Welder</color></link> to upgrade for increased processing speed and more recipe options."
.into(),
name: "Autolathe Printer Mod".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-462415758i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "Battery_Wireless_cell".into(),
prefab_hash: -462415758i32,
desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full"
.into(),
name: "Battery Wireless Cell".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Battery,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
-41519077i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "Battery_Wireless_cell_Big".into(),
prefab_hash: -41519077i32,
desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full"
.into(),
name: "Battery Wireless Cell (Big)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Battery,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
-1976947556i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "CardboardBox".into(),
prefab_hash: -1976947556i32,
desc: "".into(),
name: "Cardboard Box".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Storage,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1634532552i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeAccessController".into(),
prefab_hash: -1634532552i32,
desc: "".into(),
name: "Cartridge (Access Controller)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1550278665i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeAtmosAnalyser".into(),
prefab_hash: -1550278665i32,
desc: "The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by <link=ExMin><color=#0080FFFF>ExMin</color></link> for use with the OreCore <link=ThingItemTablet><color=green>Handheld Tablet</color></link>. It displays the pressure, concentration and molar quantity of <link=GasPage><color=#0080FFFF>gas</color></link> in rooms, tanks, or pipe networks."
.into(),
name: "Atmos Analyzer".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-932136011i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeConfiguration".into(),
prefab_hash: -932136011i32,
desc: "".into(),
name: "Configuration".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1462180176i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeElectronicReader".into(),
prefab_hash: -1462180176i32,
desc: "".into(),
name: "eReader".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1957063345i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeGPS".into(),
prefab_hash: -1957063345i32,
desc: "".into(),
name: "GPS".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
872720793i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeGuide".into(),
prefab_hash: 872720793i32,
desc: "".into(),
name: "Guide".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1116110181i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeMedicalAnalyser".into(),
prefab_hash: -1116110181i32,
desc: "When added to the OreCore <link=ThingItemTablet><color=green>Handheld Tablet</color></link>, <link=Asura><color=#0080FFFF>Asura\'s</color></link>\'s ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users."
.into(),
name: "Medical Analyzer".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1606989119i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeNetworkAnalyser".into(),
prefab_hash: 1606989119i32,
desc: "A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied <link=Sinotai><color=#0080FFFF>Sinotai</color></link> design, it\'s used in conjunction with the OreCore <link=ThingItemTablet><color=green>Handheld Tablet</color></link>."
.into(),
name: "Network Analyzer".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1768732546i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeOreScanner".into(),
prefab_hash: -1768732546i32,
desc: "When inserted into a <link=ThingItemTablet><color=green>Handheld Tablet</color></link> the scanner will display minerals hidden underground on the tablet."
.into(),
name: "Ore Scanner".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1738236580i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeOreScannerColor".into(),
prefab_hash: 1738236580i32,
desc: "When inserted into a <link=ThingItemTablet><color=green>Handheld Tablet</color></link> the scanner will display minerals hidden underground in different colors on the tablet."
.into(),
name: "Ore Scanner (Color)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1101328282i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgePlantAnalyser".into(),
prefab_hash: 1101328282i32,
desc: "".into(),
name: "Cartridge Plant Analyser".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
81488783i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CartridgeTracker".into(),
prefab_hash: 81488783i32,
desc: "".into(),
name: "Tracker".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Cartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1633663176i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardAdvAirlockControl".into(),
prefab_hash: 1633663176i32,
desc: "".into(),
name: "Advanced Airlock".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1618019559i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardAirControl".into(),
prefab_hash: 1618019559i32,
desc: "When added to a <link=ThingStructureConsole><color=green>Console</color></link>, air control circuit boards allow you to program an <link=ThingStructureActiveVent><color=green>Active Vent</color></link>. As with small dogs and 83% of people, air control circuits have only three modes: Pressure, Draft and Offline. Pressure mode maintains a 100kPa atmosphere, switching the active vent between inward and outward flow until target pressure is achieved. Draft mode allows you to pair active vents to circulate air. Offline mode deactivates the vent. "
.into(),
name: "Air Control".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
912176135i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardAirlockControl".into(),
prefab_hash: 912176135i32,
desc: "Rumored to have been first sketched on a <link=Norsec><color=#0080FFFF>Norsec</color></link> toilet wall by a disgruntled engineer, the Exgress airlock control circuit board\u{2019}s versatility and ease of fabrication has made it the <link=Stationeers><color=#0080FFFF>Stationeers</color></link> control system of choice for <link=ThingStructureAirlock><color=green>Airlock</color></link> cycling protocols. \n\nTo enter setup mode, insert the board into a <link=ThingStructureConsole><color=green>Console</color></link> along with a data disk. In this mode, you can see all data-accessible objects currently connected to the <link=ThingStructureConsole><color=green>Console</color></link>. Doors, lights, gas sensors and slave consoles can be selected (highlighted green), and will be controlled once the data disk is removed."
.into(),
name: "Airlock".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-412104504i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardCameraDisplay".into(),
prefab_hash: -412104504i32,
desc: "Surveillance is sometimes necessary when building bases in highly hostile environments. The camera display circuit board allows wary Stationeers to turn a <link=ThingStructureConsole><color=green>Console</color></link> into a security display when connected to a <link=ThingStructureCamera><color=green>Camera</color></link>."
.into(),
name: "Camera Display".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
855694771i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardDoorControl".into(),
prefab_hash: 855694771i32,
desc: "A basic tool of <link=Stationeers><color=#0080FFFF>Stationeer</color></link> base construction, this circuit board provides a way to open and close a <link=ThingStructureCompositeDoor><color=green>Composite Door</color></link>, <link=ThingStructureBlastDoor><color=green>Blast Door</color></link> or <link=ThingStructureGlassDoor><color=green>Glass Door</color></link> remotely, when connected to a <link=ThingStructureConsole><color=green>Console</color></link>. This system can be further linked to <link=ThingStructureMotionSensor><color=green>Motion Sensor</color></link> to create automatic doors."
.into(),
name: "Door Control".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-82343730i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardGasDisplay".into(),
prefab_hash: -82343730i32,
desc: "Information is power. Place this circuitboard into a <link=ThingStructureConsole><color=green>Console</color></link> to create a display that shows gas pressure or temperature of any connected tank, storage cannister, <link=ThingItemPipeAnalyizer><color=green>Kit (Pipe Analyzer)</color></link> or <link=ThingItemGasSensor><color=green>Kit (Gas Sensor)</color></link>."
.into(),
name: "Gas Display".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1344368806i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardGraphDisplay".into(),
prefab_hash: 1344368806i32,
desc: "".into(),
name: "Graph Display".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1633074601i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardHashDisplay".into(),
prefab_hash: 1633074601i32,
desc: "".into(),
name: "Hash Display".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1134148135i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardModeControl".into(),
prefab_hash: -1134148135i32,
desc: "Can\'t decide which mode you love most? This circuit board allows you to switch any connected device between operation modes."
.into(),
name: "Mode Control".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1923778429i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardPowerControl".into(),
prefab_hash: -1923778429i32,
desc: "Under distant suns and demanding environments, <link=Stationeers><color=#0080FFFF>Stationeer</color></link> systems need to balance reliability, resilience and versatility. The power control board allows remote enabling and disabling of selected devices, disconnecting manual operation. \n \nThe circuit board has two modes: \'Link\' switches all devices on or off; \'Toggle\' switches each device to their alternate state. "
.into(),
name: "Power Control".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2044446819i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardShipDisplay".into(),
prefab_hash: -2044446819i32,
desc: "When the original <link=Stationeers><color=#0080FFFF>Stationeer</color></link> Handbook collapsed under its own weight into a singularity, certain information was irretrievably lost. Amongst this mysterious corpus of knowledge is the exact purpose of the ship display board."
.into(),
name: "Ship Display".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2020180320i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "CircuitboardSolarControl".into(),
prefab_hash: 2020180320i32,
desc: "Adding a solar control board to a <link=ThingStructureConsole><color=green>Console</color></link> lets you manually control the horizontal and vertical angles of any connected <link=ThingStructureSolarPanel><color=green>Solar Panel</color></link>."
.into(),
name: "Solar Control".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1228794916i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "CompositeRollCover".into(),
prefab_hash: 1228794916i32,
desc: "0.Operate\n1.Logic".into(),
name: "Composite Roll Cover".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::Idle, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
8709219i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "CrateMkII".into(),
prefab_hash: 8709219i32,
desc: "A more heavily reinforced version of the iconic <link=ThingDynamicCrate><color=green>Dynamic Crate</color></link>, the Crate Mk II is resistant to incredibly high pressures and temperatures. Short of disposing of it in a black hole, the Mk II is about as safe as luggage gets."
.into(),
name: "Crate Mk II".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Storage,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1531087544i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "DecayedFood".into(),
prefab_hash: 1531087544i32,
desc: "When your <link=OrganicPage><color=#0080FFFF>food</color></link> decays, it turns into this. <link=ODA><color=#0080FFFF>ODA</color></link> scientists have attempted to determine the exact constituents of this substance, but it remains evasive and mysterious. Suffice to say, eating it is a bad idea. Research has determined, however, that The exact speed of decay varies individually by:\n\n- TEMPERATURE - Refrigeration will slow decay, but many foods will be damaged by exposure to extreme low pressure, as well as extreme heat. The optimum temperature is 0 kelvin (-272 C).\n\n- FOOD TYPE - Each <link=OrganicPage><color=#0080FFFF>food</color></link> type has its own decay properties. <link=ThingItemTomatoSoup><color=green>Tomato Soup</color></link> lasts a lot longer than a <link=ThingItemTomato><color=green>Tomato</color></link>, for instance.\n\n- PRESSURE - Food decays faster when the pressure drops below 1 atmosphere (101kPa). Decay happens exponentially more quickly as the atmosphere approaches a perfect vacuum. There is no effect from higher pressures. \n\n- ATMOSPHERE - Different gases can slow and accelerate the decay process. The process will take account of respective gas ratios in mixed atmospheres in calculating the decay modifier. The following rates apply across all foods:\n\n> <link=GasOxygen><color=#44AD83>Oxygen</color></link> x 1.3\n> <link=GasNitrogen><color=#44AD83>Nitrogen</color></link> x 0.6\n> <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link> x 0.8\n> <link=GasVolatiles><color=#44AD83>Volatiles</color></link> x 1\n> <link=GasPollutant><color=#44AD83>Pollutant</color></link> x 3\n> <link=GasNitrousOxide><color=#44AD83>Nitrous Oxide</color></link> x 1.5\n> <link=GasSteam><color=#44AD83>Steam</color></link> x 2\n> Vacuum (see PRESSURE above)\n\n"
.into(),
name: "Decayed Food".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 25u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1844430312i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "DeviceLfoVolume".into(),
prefab_hash: -1844430312i32,
desc: "The low frequency oscillator (or LFO) makes everything sound dark, twisted and crunchy by altering the shape of the waves output by a <link=ThingLogicStepSequencer8><color=green>Logic Step Sequencer</color></link>.\n \nTo set up an LFO:\n\n1. Place the LFO unit\n2. Set the LFO output to a <link=ThingPassiveSpeaker><color=green>Passive Speaker</color></link>\n2. Set a sequencers\' output to LFO - so the sequencer\'s signal runs through the LFO to a speaker.\n3. Place a <link=ThingStopWatch><color=green>Stop Watch</color></link> or use an existing one, then use a <link=ThingStructureLogicWriter><color=green>Logic Writer</color></link> to write it to the LFO.\n4. Use another logic writer to write the BPM to the LFO.\n5. You are ready. This is the future. You\'re in space. Make it sound cool.\n\nFor more info, check out the <link=MusicPage><color=#0080FFFF>music page</color></link>."
.into(),
name: "Low frequency oscillator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Time, MemoryAccess::ReadWrite), (LogicType::Bpm,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Whole Note".into()), (1u32, "Half Note".into()), (2u32,
"Quarter Note".into()), (3u32, "Eighth Note".into()), (4u32,
"Sixteenth Note".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1762696475i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "DeviceStepUnit".into(),
prefab_hash: 1762696475i32,
desc: "0.C-2\n1.C#-2\n2.D-2\n3.D#-2\n4.E-2\n5.F-2\n6.F#-2\n7.G-2\n8.G#-2\n9.A-2\n10.A#-2\n11.B-2\n12.C-1\n13.C#-1\n14.D-1\n15.D#-1\n16.E-1\n17.F-1\n18.F#-1\n19.G-1\n20.G#-1\n21.A-1\n22.A#-1\n23.B-1\n24.C0\n25.C#0\n26.D0\n27.D#0\n28.E0\n29.F0\n30.F#0\n31.G0\n32.G#0\n33.A0\n34.A#0\n35.B0\n36.C1\n37.C#1\n38.D1\n39.D#1\n40.E1\n41.F1\n42.F#1\n43.G1\n44.G#1\n45.A1\n46.A#1\n47.B1\n48.C2\n49.C#2\n50.D2\n51.D#2\n52.E2\n53.F2\n54.F#2\n55.G2\n56.G#2\n57.A2\n58.A#2\n59.B2\n60.C3\n61.C#3\n62.D3\n63.D#3\n64.E3\n65.F3\n66.F#3\n67.G3\n68.G#3\n69.A3\n70.A#3\n71.B3\n72.C4\n73.C#4\n74.D4\n75.D#4\n76.E4\n77.F4\n78.F#4\n79.G4\n80.G#4\n81.A4\n82.A#4\n83.B4\n84.C5\n85.C#5\n86.D5\n87.D#5\n88.E5\n89.F5\n90.F#5\n91.G5 \n92.G#5\n93.A5\n94.A#5\n95.B5\n96.C6\n97.C#6\n98.D6\n99.D#6\n100.E6\n101.F6\n102.F#6\n103.G6\n104.G#6\n105.A6\n106.A#6\n107.B6\n108.C7\n109.C#7\n110.D7\n111.D#7\n112.E7\n113.F7\n114.F#7\n115.G7\n116.G#7\n117.A7\n118.A#7\n119.B7\n120.C8\n121.C#8\n122.D8\n123.D#8\n124.E8\n125.F8\n126.F#8\n127.G8"
.into(),
name: "Device Step Unit".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "C-2".into()), (1u32, "C#-2".into()), (2u32, "D-2"
.into()), (3u32, "D#-2".into()), (4u32, "E-2".into()), (5u32,
"F-2".into()), (6u32, "F#-2".into()), (7u32, "G-2".into()),
(8u32, "G#-2".into()), (9u32, "A-2".into()), (10u32, "A#-2"
.into()), (11u32, "B-2".into()), (12u32, "C-1".into()), (13u32,
"C#-1".into()), (14u32, "D-1".into()), (15u32, "D#-1".into()),
(16u32, "E-1".into()), (17u32, "F-1".into()), (18u32, "F#-1"
.into()), (19u32, "G-1".into()), (20u32, "G#-1".into()), (21u32,
"A-1".into()), (22u32, "A#-1".into()), (23u32, "B-1".into()),
(24u32, "C0".into()), (25u32, "C#0".into()), (26u32, "D0"
.into()), (27u32, "D#0".into()), (28u32, "E0".into()), (29u32,
"F0".into()), (30u32, "F#0".into()), (31u32, "G0".into()),
(32u32, "G#0".into()), (33u32, "A0".into()), (34u32, "A#0"
.into()), (35u32, "B0".into()), (36u32, "C1".into()), (37u32,
"C#1".into()), (38u32, "D1".into()), (39u32, "D#1".into()),
(40u32, "E1".into()), (41u32, "F1".into()), (42u32, "F#1"
.into()), (43u32, "G1".into()), (44u32, "G#1".into()), (45u32,
"A1".into()), (46u32, "A#1".into()), (47u32, "B1".into()),
(48u32, "C2".into()), (49u32, "C#2".into()), (50u32, "D2"
.into()), (51u32, "D#2".into()), (52u32, "E2".into()), (53u32,
"F2".into()), (54u32, "F#2".into()), (55u32, "G2".into()),
(56u32, "G#2".into()), (57u32, "A2".into()), (58u32, "A#2"
.into()), (59u32, "B2".into()), (60u32, "C3".into()), (61u32,
"C#3".into()), (62u32, "D3".into()), (63u32, "D#3".into()),
(64u32, "E3".into()), (65u32, "F3".into()), (66u32, "F#3"
.into()), (67u32, "G3".into()), (68u32, "G#3".into()), (69u32,
"A3".into()), (70u32, "A#3".into()), (71u32, "B3".into()),
(72u32, "C4".into()), (73u32, "C#4".into()), (74u32, "D4"
.into()), (75u32, "D#4".into()), (76u32, "E4".into()), (77u32,
"F4".into()), (78u32, "F#4".into()), (79u32, "G4".into()),
(80u32, "G#4".into()), (81u32, "A4".into()), (82u32, "A#4"
.into()), (83u32, "B4".into()), (84u32, "C5".into()), (85u32,
"C#5".into()), (86u32, "D5".into()), (87u32, "D#5".into()),
(88u32, "E5".into()), (89u32, "F5".into()), (90u32, "F#5"
.into()), (91u32, "G5 ".into()), (92u32, "G#5".into()), (93u32,
"A5".into()), (94u32, "A#5".into()), (95u32, "B5".into()),
(96u32, "C6".into()), (97u32, "C#6".into()), (98u32, "D6"
.into()), (99u32, "D#6".into()), (100u32, "E6".into()), (101u32,
"F6".into()), (102u32, "F#6".into()), (103u32, "G6".into()),
(104u32, "G#6".into()), (105u32, "A6".into()), (106u32, "A#6"
.into()), (107u32, "B6".into()), (108u32, "C7".into()), (109u32,
"C#7".into()), (110u32, "D7".into()), (111u32, "D#7".into()),
(112u32, "E7".into()), (113u32, "F7".into()), (114u32, "F#7"
.into()), (115u32, "G7".into()), (116u32, "G#7".into()), (117u32,
"A7".into()), (118u32, "A#7".into()), (119u32, "B7".into()),
(120u32, "C8".into()), (121u32, "C#8".into()), (122u32, "D8"
.into()), (123u32, "D#8".into()), (124u32, "E8".into()), (125u32,
"F8".into()), (126u32, "F#8".into()), (127u32, "G8".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
519913639i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicAirConditioner".into(),
prefab_hash: 519913639i32,
desc: "The <link=Sinotai><color=#0080FFFF>Sinotai</color></link>-designed Huxi portable air conditioner cools by drawing heat from the atmosphere and storing it, or adding heat to the atmosphere from its internal tank. With a max internal pressure of 8106kPa, its capacity is relatively limited, physics being clear on this subject. To extend its temperature storage ability, bolt the Huxi to a <link=ThingStructureTankConnector><color=green>Tank Connector</color></link>, then connect it to a pipe network supplying hot or cold <link=GasPage><color=#0080FFFF>gases</color></link>."
.into(),
name: "Portable Air Conditioner".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1941079206i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicCrate".into(),
prefab_hash: 1941079206i32,
desc: "The humble dynamic crate has become a symbol of <link=Stationeers><color=#0080FFFF>Stationeer</color></link> invention and independence. With twelve slots and handles at either end for ease of carriage, it\'s both standard issue and critical kit for cadets and Commanders alike."
.into(),
name: "Dynamic Crate".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Storage,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-2085885850i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGPR".into(),
prefab_hash: -2085885850i32,
desc: "<N:EN:DynamicGPR>".into(),
name: "<N:EN:DynamicGPR>".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1713611165i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterAir".into(),
prefab_hash: -1713611165i32,
desc: "Portable gas tanks do one thing: store gas. But there\'s lots you can do with them. To refill the tank, bolt it to a <link=ThingItemTankConnector><color=green>Kit (Tank Connector)</color></link>, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it\'s full, you can refill a <link=ThingItemGasCanisterOxygen><color=green>Canister (Oxygen)</color></link> by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere. They also attach to rovers and rockets. Alternatively, kick it over and practice barrel rolling. The possibilities are endless."
.into(),
name: "Portable Gas Tank (Air)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-322413931i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
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 <link=ThingItemTankConnector><color=green>Kit (Tank Connector)</color></link>, 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 <link=ThingItemGasCanisterCarbonDioxide><color=green>Canister (CO2)</color></link> by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere ... of sorts."
.into(),
name: "Portable Gas Tank (CO2)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1741267161i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterEmpty".into(),
prefab_hash: -1741267161i32,
desc: "Portable gas tanks store gas. To refill one, bolt it to a <link=ThingItemTankConnector><color=green>Kit (Tank Connector)</color></link>, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it\'s full, you can refill a <link=ThingItemGasCanisterEmpty><color=green>Canister</color></link> by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere."
.into(),
name: "Portable Gas Tank".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-817051527i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterFuel".into(),
prefab_hash: -817051527i32,
desc: "Portable tanks store gas. They\'re good at it. If you need to refill a tank, bolt it to a <link=ThingItemTankConnector><color=green>Kit (Tank Connector)</color></link>, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or things get messy. You can refill a <link=ThingItemGasCanisterFuel><color=green>Canister (Fuel)</color></link> by attaching it to the tank\'s striped section. Or you could use a <link=ThingItemWrench><color=green>Wrench</color></link> to attach it to a rover or rocket for later. It\'s really up to you."
.into(),
name: "Portable Gas Tank (Fuel)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
121951301i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterNitrogen".into(),
prefab_hash: 121951301i32,
desc: "Portable tanks store gas. If you need to refill a tank, bolt it to a <link=ThingItemTankConnector><color=green>Kit (Tank Connector)</color></link> using a <link=ThingItemWrench><color=green>Wrench</color></link>, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you\'ll end up with <link=GasNitrogen><color=#44AD83>Nitrogen</color></link> in places you weren\'t expecting. You can refill a <link=ThingItemGasCanisterNitrogen><color=green>Canister (Nitrogen)</color></link> by attaching it to the tank\'s striped section. Or you could use a <link=ThingItemWrench><color=green>Wrench</color></link> to attach it to a rover or rocket for later."
.into(),
name: "Portable Gas Tank (Nitrogen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
30727200i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterNitrousOxide".into(),
prefab_hash: 30727200i32,
desc: "".into(),
name: "Portable Gas Tank (Nitrous Oxide)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1360925836i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterOxygen".into(),
prefab_hash: 1360925836i32,
desc: "Portable tanks store gas. If you need to refill a tank, bolt it to a <link=ThingItemTankConnector><color=green>Kit (Tank Connector)</color></link> using a <link=ThingItemWrench><color=green>Wrench</color></link>, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you\'ll be picking tank shards out of your face. You can refill a <link=ThingItemGasCanisterOxygen><color=green>Canister (Oxygen)</color></link> by attaching it to the tank\'s striped section. Or you could vent it into a sealed room to create an atmosphere. Or even paint it pink, call it Steve and fill that sad space in your heart."
.into(),
name: "Portable Gas Tank (Oxygen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
396065382i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterPollutants".into(),
prefab_hash: 396065382i32,
desc: "".into(),
name: "Portable Gas Tank (Pollutants)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-8883951i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterRocketFuel".into(),
prefab_hash: -8883951i32,
desc: "".into(),
name: "Dynamic Gas Canister Rocket Fuel".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
108086870i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterVolatiles".into(),
prefab_hash: 108086870i32,
desc: "Portable tanks store gas. To refill one, bolt it to a <link=ThingItemTankConnector><color=green>Kit (Tank Connector)</color></link> using a <link=ThingItemWrench><color=green>Wrench</color></link>, then connect it to a pipe network. Don\'t fill it above 10 MPa, unless you\'re the sort who loves complicated, flammable emergencies. You can refill a <link=ThingItemGasCanisterVolatiles><color=green>Canister (Volatiles)</color></link> by attaching it to the tank\'s striped section. Or you could use a <link=ThingItemWrench><color=green>Wrench</color></link> to attach to a rocket and show it around the Solar System."
.into(),
name: "Portable Gas Tank (Volatiles)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
197293625i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasCanisterWater".into(),
prefab_hash: 197293625i32,
desc: "This portable tank stores liquid, and liquid only. You just have to fill it up. To do this, bolt one to a <link=ThingItemTankConnector><color=green>Kit (Tank Connector)</color></link> using a <link=ThingItemWrench><color=green>Wrench</color></link>, then connect it to <link=ThingStructurePipeLiquidStraight><color=green>Liquid Pipe (Straight)</color></link> to supply liquid to a network. \nTry to keep pressure under 10 MPa, or you\'ll end up wet, hurt and sorry, without any of the fun.\nYou can refill a <link=ThingItemGasCanisterWater><color=green>Liquid Canister (Water)</color></link> by attaching it to the tank\'s striped section. Or you could use a <link=ThingItemWrench><color=green>Wrench</color></link> to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself."
.into(),
name: "Portable Liquid Tank (Water)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Gas Canister".into(), typ : Class::LiquidCanister }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-386375420i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasTankAdvanced".into(),
prefab_hash: -386375420i32,
desc: "0.Mode0\n1.Mode1".into(),
name: "Gas Tank Mk II".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1264455519i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGasTankAdvancedOxygen".into(),
prefab_hash: -1264455519i32,
desc: "0.Mode0\n1.Mode1".into(),
name: "Portable Gas Tank Mk II (Oxygen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-82087220i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicGenerator".into(),
prefab_hash: -82087220i32,
desc: "Every <link=Stationeers><color=#0080FFFF>Stationeer\'s</color></link> best friend, the portable generator gets you up and running, fast. Fill it with a <link=ThingItemGasCanisterFuel><color=green>Canister (Fuel)</color></link> to power up and charge a <link=ThingItemBatteryCell><color=green>Battery Cell (Small)</color></link>, or attach it to a <link=ThingStructurePowerConnector><color=green>Power Connector</color></link> to link it into your electrical network. It\'s pressure driven, so functions more efficiently at lower temperatures, and REALLY efficiently if supercooled. Perfecting your fuel mix also makes a big difference."
.into(),
name: "Portable Generator".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister },
SlotInfo { name : "Battery".into(), typ : Class::Battery }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
587726607i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicHydroponics".into(),
prefab_hash: 587726607i32,
desc: "".into(),
name: "Portable Hydroponics".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(),
typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ :
Class::Plant }, SlotInfo { name : "Liquid Canister".into(), typ :
Class::LiquidCanister }, SlotInfo { name : "Liquid Canister".into(), typ
: Class::Plant }, SlotInfo { name : "Liquid Canister".into(), typ :
Class::Plant }, SlotInfo { name : "Liquid Canister".into(), typ :
Class::Plant }, SlotInfo { name : "Liquid Canister".into(), typ :
Class::Plant }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-21970188i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "DynamicLight".into(),
prefab_hash: -21970188i32,
desc: "Philippe Starck might not applaud, but this battery-powered light source undarkens the corners when illumination\'s lacking. Powered by any battery, it\'s a \'no-frills\' <link=Xigo><color=#0080FFFF>Xigo</color></link> design that can be cheaply fabricated with the minimum of fuss. Unless you like fuss. In which case, fuss all you like."
.into(),
name: "Portable Light".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1939209112i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicLiquidCanisterEmpty".into(),
prefab_hash: -1939209112i32,
desc: "This portable tank stores liquid, and liquid only. You can bolt one to a <link=ThingItemTankConnectorLiquid><color=green>Kit (Liquid Tank Connector)</color></link> using a <link=ThingItemWrench><color=green>Wrench</color></link>, then connect it to a pipe network to refill it. You can refill a <link=ThingItemGasCanisterWater><color=green>Liquid Canister (Water)</color></link> by attaching it to the tank\'s striped section. Or you could use a <link=ThingItemWrench><color=green>Wrench</color></link> to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself."
.into(),
name: "Portable Liquid Tank".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.025f32,
radiation_factor: 0.025f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
2130739600i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicMKIILiquidCanisterEmpty".into(),
prefab_hash: 2130739600i32,
desc: "An empty, insulated liquid <link=SlotGasCanister><color=orange>Gas Canister</color></link>."
.into(),
name: "Portable Liquid Tank Mk II".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-319510386i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicMKIILiquidCanisterWater".into(),
prefab_hash: -319510386i32,
desc: "An insulated version of the <link=ThingDynamicMKIILiquidCanisterWater><color=green>Portable Liquid Tank Mk II (Water)</color></link>, for storing liquids without them gaining or losing temperature."
.into(),
name: "Portable Liquid Tank Mk II (Water)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
755048589i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "DynamicScrubber".into(),
prefab_hash: 755048589i32,
desc: "A portable scrubber does just what it sounds like: removes specific substances from the air. For instance, attaching a <link=ThingItemGasFilterCarbonDioxide><color=green>Filter (Carbon Dioxide)</color></link> will pull <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link> from the surrounding atmosphere. Note that the scrubber has room for one battery and two filters, which will double its operating speed. Neat. When it reaches an internal pressure of 8106kPA, an error signal will flash on the switch, indicating it needs to be emptied. Either vent it directly, or attach it to a pipe network via a <link=ThingItemTankConnector><color=green>Kit (Tank Connector)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Portable Air Scrubber".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name :
"Gas Filter".into(), typ : Class::GasFilter }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
106953348i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "DynamicSkeleton".into(),
prefab_hash: 106953348i32,
desc: "".into(),
name: "Skeleton".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-311170652i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ElectronicPrinterMod".into(),
prefab_hash: -311170652i32,
desc: "Apply to an <link=ThingStructureElectronicsPrinter><color=green>Electronics Printer</color></link> with a <link=ThingItemWeldingTorch><color=green>Welding Torch</color></link> or <link=ThingItemArcWelder><color=green>Arc Welder</color></link> to upgrade for increased processing speed and more recipe options."
.into(),
name: "Electronic Printer Mod".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-110788403i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ElevatorCarrage".into(),
prefab_hash: -110788403i32,
desc: "".into(),
name: "Elevator".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1730165908i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "EntityChick".into(),
prefab_hash: 1730165908i32,
desc: "Once a chick is hatched, it gets hungry. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not."
.into(),
name: "Entity Chick".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
334097180i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "EntityChickenBrown".into(),
prefab_hash: 334097180i32,
desc: "Like so many of its brethren, this is a chicken. A brown one. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not."
.into(),
name: "Entity Chicken Brown".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1010807532i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "EntityChickenWhite".into(),
prefab_hash: 1010807532i32,
desc: "It\'s a chicken, as white as moondust. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not."
.into(),
name: "Entity Chicken White".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
966959649i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "EntityRoosterBlack".into(),
prefab_hash: 966959649i32,
desc: "This is a rooster. It is black. There is dignity in this.".into(),
name: "Entity Rooster Black".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-583103395i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "EntityRoosterBrown".into(),
prefab_hash: -583103395i32,
desc: "The common brown rooster. Don\'t let it hear you say that."
.into(),
name: "Entity Rooster Brown".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1517856652i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "Fertilizer".into(),
prefab_hash: 1517856652i32,
desc: "Fertilizer alters plant growth processes, and is created by the basic composter and the <link=ThingStructureAdvancedComposter><color=green>Advanced Composter</color></link> using <link=OrganicPage><color=#0080FFFF>organic</color></link> matter.\nFertilizer\'s affects depend on its ingredients:\n\n- <link=OrganicPage><color=#0080FFFF>Food</color></link> increases PLANT YIELD up to two times\n- <link=ThingDecayedFood><color=green>Decayed Food</color></link> increases plant GROWTH SPEED up to two times\n- <link=ThingItemBiomass><color=green>Biomass</color></link> increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for\n\nThe effect of these ingredients depends on their respective proportions in the composter when processing is activated. "
.into(),
name: "Fertilizer".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-86315541i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "FireArmSMG".into(),
prefab_hash: -86315541i32,
desc: "0.Single\n1.Auto".into(),
name: "Fire Arm SMG".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "".into(), typ : Class::Magazine }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1845441951i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Flag_ODA_10m".into(),
prefab_hash: 1845441951i32,
desc: "".into(),
name: "Flag (ODA 10m)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1159126354i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Flag_ODA_4m".into(),
prefab_hash: 1159126354i32,
desc: "".into(),
name: "Flag (ODA 4m)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1998634960i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Flag_ODA_6m".into(),
prefab_hash: 1998634960i32,
desc: "".into(),
name: "Flag (ODA 6m)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-375156130i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Flag_ODA_8m".into(),
prefab_hash: -375156130i32,
desc: "".into(),
name: "Flag (ODA 8m)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
118685786i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "FlareGun".into(),
prefab_hash: 118685786i32,
desc: "".into(),
name: "Flare Gun".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Magazine".into(), typ : Class::Flare }, SlotInfo {
name : "<N:EN:Chamber>".into(), typ : Class::Blocked }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1840108251i32,
StructureCircuitHolderTemplate {
templateType: "StructureCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "H2Combustor".into(),
prefab_hash: 1840108251i32,
desc: "Adapted slightly from its original <link=Recurso><color=#0080FFFF>Recurso</color></link> design, the <link=GasVolatiles><color=#44AD83>Volatiles</color></link> Combustor does exactly what its name suggests - it burns a mixture of volatiles and <link=GasOxygen><color=#44AD83>Oxygen</color></link> to create water. Extremely useful in hot or arid environments, users need to be aware that the combustor outputs considerable waste heat. The device is also less than perfectly efficient, resulting in the autoignition of volatiles in the chamber, and the production of waste gases which must be dealt with."
.into(),
name: "H2 Combustor".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::PressureInput, MemoryAccess::Read),
(LogicType::TemperatureInput, MemoryAccess::Read),
(LogicType::RatioOxygenInput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioNitrogenInput, MemoryAccess::Read),
(LogicType::RatioPollutantInput, MemoryAccess::Read),
(LogicType::RatioVolatilesInput, MemoryAccess::Read),
(LogicType::RatioWaterInput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideInput, MemoryAccess::Read),
(LogicType::TotalMolesInput, MemoryAccess::Read),
(LogicType::PressureOutput, MemoryAccess::Read),
(LogicType::TemperatureOutput, MemoryAccess::Read),
(LogicType::RatioOxygenOutput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioPollutantOutput, MemoryAccess::Read),
(LogicType::RatioVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioWaterOutput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideOutput, MemoryAccess::Read),
(LogicType::TotalMolesOutput, MemoryAccess::Read),
(LogicType::CombustionInput, MemoryAccess::Read),
(LogicType::CombustionOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenInput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioSteamInput, MemoryAccess::Read),
(LogicType::RatioSteamOutput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantInput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Idle".into()), (1u32, "Active".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Programmable Chip".into(), typ :
Class::ProgrammableChip }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: Some(2u32),
has_activate_state: true,
has_atmosphere: true,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
247238062i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "Handgun".into(),
prefab_hash: 247238062i32,
desc: "".into(),
name: "Handgun".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Magazine".into(), typ : Class::Magazine }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1254383185i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "HandgunMagazine".into(),
prefab_hash: 1254383185i32,
desc: "".into(),
name: "Handgun Magazine".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Magazine,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-857713709i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "HumanSkull".into(),
prefab_hash: -857713709i32,
desc: "".into(),
name: "Human Skull".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-73796547i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ImGuiCircuitboardAirlockControl".into(),
prefab_hash: -73796547i32,
desc: "".into(),
name: "Airlock (Experimental)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Circuitboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-842048328i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemActiveVent".into(),
prefab_hash: -842048328i32,
desc: "When constructed, this kit places an <link=ThingStructureActiveVent><color=green>Active Vent</color></link> on any support structure."
.into(),
name: "Kit (Active Vent)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1871048978i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemAdhesiveInsulation".into(),
prefab_hash: 1871048978i32,
desc: "".into(),
name: "Adhesive Insulation".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 20u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1722785341i32,
ItemCircuitHolderTemplate {
templateType: "ItemCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "ItemAdvancedTablet".into(),
prefab_hash: 1722785341i32,
desc: "The advanced <link=Xigo><color=#0080FFFF>Xigo</color></link> Padi 2 tablet is an improved version of the basic <link=ThingItemTablet><color=green>Handheld Tablet</color></link>, boasting two <link=CartridgePage><color=#0080FFFF>cartridge</color></link> slots. The Padi 2 accepts <link=ThingCartridgeAtmosAnalyser><color=green>Atmos Analyzer</color></link>, <link=ThingCartridgeTracker><color=green>Tracker</color></link>, <link=ThingCartridgeMedicalAnalyser><color=green>Medical Analyzer</color></link>, <link=ThingCartridgeOreScanner><color=green>Ore Scanner</color></link>, <link=ThingCartridgeElectronicReader><color=green>eReader</color></link>, and various other cartridges.\n\t \n\t With a <link=ThingItemIntegratedCircuit10><color=green>Integrated Circuit (IC10)</color></link> in the <link=SlotProgrammableChip><color=orange>Programmable Chip</color></link>, 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 <link=ThingItemHardSuit><color=green>Hardsuit</color></link>.Connects to <pos=300><link=ThingStructureLogicTransmitter><color=green>Logic Transmitter</color></link>"
.into(),
name: "Advanced Tablet".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (3u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::Volume,
MemoryAccess::ReadWrite), (LogicType::SoundAlert,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: true,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Cartridge".into(), typ : Class::Cartridge }, SlotInfo { name :
"Cartridge1".into(), typ : Class::Cartridge }, SlotInfo { name :
"Programmable Chip".into(), typ : Class::ProgrammableChip }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
176446172i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemAlienMushroom".into(),
prefab_hash: 176446172i32,
desc: "".into(),
name: "Alien Mushroom".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-9559091i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemAmmoBox".into(),
prefab_hash: -9559091i32,
desc: "".into(),
name: "Ammo Box".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
201215010i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemAngleGrinder".into(),
prefab_hash: 201215010i32,
desc: "Angles-be-gone with the trusty angle grinder.".into(),
name: "Angle Grinder".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1385062886i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemArcWelder".into(),
prefab_hash: 1385062886i32,
desc: "".into(),
name: "Arc Welder".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1757673317i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemAreaPowerControl".into(),
prefab_hash: 1757673317i32,
desc: "This kit places a <link=ThingStructureAreaPowerControl><color=green>Area Power Control</color></link> (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow."
.into(),
name: "Kit (Power Controller)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
412924554i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemAstroloyIngot".into(),
prefab_hash: 412924554i32,
desc: "Due to the original Stationeer manual collapsing into a singularity, Astroloy recipes have been warped by spacetime contortions. The correct Astroloy recipe, as memorialized for all time in a series of charming plastic icons, is 1.0 Copper, 1.0 Cobalt, and 2.0 Steel."
.into(),
name: "Ingot (Astroloy)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Astroloy".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1662476145i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemAstroloySheets".into(),
prefab_hash: -1662476145i32,
desc: "".into(),
name: "Astroloy Sheets".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
789015045i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemAuthoringTool".into(),
prefab_hash: 789015045i32,
desc: "".into(),
name: "Authoring Tool".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1731627004i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemAuthoringToolRocketNetwork".into(),
prefab_hash: -1731627004i32,
desc: "<N:EN:ItemAuthoringToolRocketNetwork>".into(),
name: "<N:EN:ItemAuthoringToolRocketNetwork>".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1262580790i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemBasketBall".into(),
prefab_hash: -1262580790i32,
desc: "".into(),
name: "Basket Ball".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
700133157i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemBatteryCell".into(),
prefab_hash: 700133157i32,
desc: "Harnessing a design pioneered in the early 21st century, the small battery cell is the <link=Stationeers><color=#0080FFFF>Stationeer\'s</color></link> basic unit of portable electrical power. While it lacks the charge of a <link=ThingItemBatteryCellLarge><color=green>Battery Cell (Large)</color></link> or <link=ThingItemBatteryCellNuclear><color=green>Battery Cell (Nuclear)</color></link>, it has the humble advantage of being fabricated from basic resources.\n\n<size=120%><b>POWER OUTPUT</b></size>\nThe small cell stores up to 36000 watts of power."
.into(),
name: "Battery Cell (Small)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Battery,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
-459827268i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemBatteryCellLarge".into(),
prefab_hash: -459827268i32,
desc: "First mass-produced by <link=Xigo><color=#0080FFFF>Xigo</color></link> in 2155 on the basis of a unattributed prototype, the classic silicon anode solid-state design extends its optimum temperature range.\n\n<size=120%><b>POWER OUTPUT</b></size>\nThe large power cell can discharge 288kW of power. \n"
.into(),
name: "Battery Cell (Large)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Battery,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
544617306i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemBatteryCellNuclear".into(),
prefab_hash: 544617306i32,
desc: "Illegal on Earth since the Chengdu Event, Norsec nuclear power cells found a new and drastically less safety-conscious market offworld.\n\n<size=120%><b>POWER OUTPUT</b></size>\nPushing the power-weight balance to its limits, the \'nuke\' has a 2.3 megawatt charge (2304000W), reflecting its reliance on exotic <link=IngotPage><color=#0080FFFF>superalloys</color></link>."
.into(),
name: "Battery Cell (Nuclear)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Battery,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
-1866880307i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemBatteryCharger".into(),
prefab_hash: -1866880307i32,
desc: "This kit produces a 5-slot <link=ThingItemBatteryCharger><color=green>Kit (Battery Charger)</color></link>."
.into(),
name: "Kit (Battery Charger)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1008295833i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemBatteryChargerSmall".into(),
prefab_hash: 1008295833i32,
desc: "".into(),
name: "Battery Charger Small".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-869869491i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemBeacon".into(),
prefab_hash: -869869491i32,
desc: "".into(),
name: "Tracking Beacon".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-831480639i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemBiomass".into(),
prefab_hash: -831480639i32,
desc: "Diced organic material that is returned when food and organic matter is passed through the <link=ThingStructureRecycler><color=green>Recycler</color></link> and <link=ThingStructureCentrifuge><color=green>Centrifuge</color></link>. Can be burned in a <link=ThingStructureFurnace><color=green>Furnace</color></link> into <link=ThingItemCharcoal><color=green>Charcoal</color></link> for use in the <link=ThingStructureSolidFuelGenerator><color=green>Generator (Solid Fuel)</color></link>."
.into(),
name: "Biomass".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("Biomass".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
893514943i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemBreadLoaf".into(),
prefab_hash: 893514943i32,
desc: "".into(),
name: "Bread Loaf".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1792787349i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCableAnalyser".into(),
prefab_hash: -1792787349i32,
desc: "".into(),
name: "Kit (Cable Analyzer)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-466050668i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCableCoil".into(),
prefab_hash: -466050668i32,
desc: "Bodily metaphors are tired and anthropocentric, but it was Frida Stuppen, the first <link=ODA><color=#0080FFFF>ODA</color></link> Administrator, who said, \'Let the cabling be as the nerve and the vessel, transmitting power and data alike through systems we forge among the stars.\' Later commentators suggested that she was simply putting a romantic gloss on a piece of dubious economy. Whatever the case, standard cabling is where any <link=Stationeers><color=#0080FFFF>Stationeer\'s</color></link> network begins. \nNormal coil has a maximum wattage of 5kW. For higher-current applications, use <link=ThingItemCableCoilHeavy><color=green>Cable Coil (Heavy)</color></link>."
.into(),
name: "Cable Coil".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2060134443i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCableCoilHeavy".into(),
prefab_hash: 2060134443i32,
desc: "Use heavy cable coil for power systems with large draws. Unlike <link=ThingStructureCableCoil><color=green><N:EN:StructureCableCoil></color></link>, which can only safely conduct 5kW, heavy cables can transmit up to 100kW."
.into(),
name: "Cable Coil (Heavy)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
195442047i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCableFuse".into(),
prefab_hash: 195442047i32,
desc: "".into(),
name: "Kit (Cable Fuses)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2104175091i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCannedCondensedMilk".into(),
prefab_hash: -2104175091i32,
desc: "Made in an <link=ThingStructureAdvancedPackagingMachine><color=green>Advanced Packaging Machine</color></link> or <link=ThingAppliancePackagingMachine><color=green>Basic Packaging Machine</color></link>, using <link=ThingItemCookedCondensedMilk><color=green>Condensed Milk</color></link> and an <link=ThingItemEmptyCan><color=green>Empty Can</color></link>, canned condensed milk is fairly high in nutrition, and does not <link=DecayPage><color=#0080FFFF>decay</color></link>."
.into(),
name: "Canned Condensed Milk".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-999714082i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCannedEdamame".into(),
prefab_hash: -999714082i32,
desc: "Made in an <link=ThingStructureAdvancedPackagingMachine><color=green>Advanced Packaging Machine</color></link> or <link=ThingAppliancePackagingMachine><color=green>Basic Packaging Machine</color></link>, using <link=ThingItemCookedSoybean><color=green>Cooked Soybean</color></link> and an <link=ThingItemEmptyCan><color=green>Empty Can</color></link>, canned edamame beans are fairly high in nutrition, and do not <link=DecayPage><color=#0080FFFF>decay</color></link>."
.into(),
name: "Canned Edamame".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1344601965i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCannedMushroom".into(),
prefab_hash: -1344601965i32,
desc: "Made in an <link=ThingStructureAdvancedPackagingMachine><color=green>Advanced Packaging Machine</color></link> or <link=ThingAppliancePackagingMachine><color=green>Basic Packaging Machine</color></link>, using <link=ThingItemCookedMushroom><color=green>Cooked Mushroom</color></link> and a <link=ThingItemEmptyCan><color=green>Empty Can</color></link>, delicious mushroom soup is fairly high in nutrition, and does not <link=DecayPage><color=#0080FFFF>decay</color></link>."
.into(),
name: "Canned Mushroom".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1161510063i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCannedPowderedEggs".into(),
prefab_hash: 1161510063i32,
desc: "Made in an <link=ThingStructureAdvancedPackagingMachine><color=green>Advanced Packaging Machine</color></link> or <link=ThingAppliancePackagingMachine><color=green>Basic Packaging Machine</color></link>, using <link=ThingItemCookedPowderedEggs><color=green>Powdered Eggs</color></link> and an <link=ThingItemEmptyCan><color=green>Empty Can</color></link>, canned powdered eggs are an exciting, dynamic food that\'s fairly high in nutrition, and does not <link=DecayPage><color=#0080FFFF>decay</color></link>."
.into(),
name: "Canned Powdered Eggs".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1185552595i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCannedRicePudding".into(),
prefab_hash: -1185552595i32,
desc: "Made in an <link=ThingStructureAdvancedPackagingMachine><color=green>Advanced Packaging Machine</color></link> or <link=ThingAppliancePackagingMachine><color=green>Basic Packaging Machine</color></link>, using <link=ThingItemCookedRice><color=green>Cooked Rice</color></link> and an <link=ThingItemEmptyCan><color=green>Empty Can</color></link>, canned rice pudding is a sweet treat, fairly high in nutrition, and does not <link=DecayPage><color=#0080FFFF>decay</color></link>."
.into(),
name: "Canned Rice Pudding".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
791746840i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCerealBar".into(),
prefab_hash: 791746840i32,
desc: "Sustains, without decay. If only all our relationships were so well balanced."
.into(),
name: "Cereal Bar".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
252561409i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCharcoal".into(),
prefab_hash: 252561409i32,
desc: "Charcoal is a lightweight, black carbon residue produced by heating <link=ThingItemBiomass><color=green>Biomass</color></link> in a <link=ThingStructureArcFurnace><color=green>Arc Furnace</color></link>. It contains less energy potential than <link=ThingItemCoalOre><color=green>Ore (Coal)</color></link>, but can be used as a basic fuel source. Charcoal can also be substituted for coal in <link=IngotPage><color=#0080FFFF>alloy</color></link> recipes."
.into(),
name: "Charcoal".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 200u32,
reagents: Some(vec![("Carbon".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-772542081i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemChemLightBlue".into(),
prefab_hash: -772542081i32,
desc: "A safe and slightly rave-some source of blue light. Snap to activate."
.into(),
name: "Chem Light (Blue)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-597479390i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemChemLightGreen".into(),
prefab_hash: -597479390i32,
desc: "Enliven the dreariest, airless rock with this glowy green light. Snap to activate."
.into(),
name: "Chem Light (Green)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-525810132i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemChemLightRed".into(),
prefab_hash: -525810132i32,
desc: "A red glowstick. Snap to activate. Then reach for the lasers."
.into(),
name: "Chem Light (Red)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1312166823i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemChemLightWhite".into(),
prefab_hash: 1312166823i32,
desc: "Snap the glowstick to activate a pale radiance that keeps the darkness at bay."
.into(),
name: "Chem Light (White)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1224819963i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemChemLightYellow".into(),
prefab_hash: 1224819963i32,
desc: "Dispel the darkness with this yellow glowstick.".into(),
name: "Chem Light (Yellow)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
234601764i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemChocolateBar".into(),
prefab_hash: 234601764i32,
desc: "".into(),
name: "Chocolate Bar".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-261575861i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemChocolateCake".into(),
prefab_hash: -261575861i32,
desc: "".into(),
name: "Chocolate Cake".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
860793245i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemChocolateCerealBar".into(),
prefab_hash: 860793245i32,
desc: "".into(),
name: "Chocolate Cereal Bar".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1724793494i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCoalOre".into(),
prefab_hash: 1724793494i32,
desc: "Humanity wouldn\'t have got to space without humble, combustible coal. Burn it in a <link=ThingSolidFuelGenerator><color=green><N:EN:SolidFuelGenerator></color></link>, smelt it in the <link=ThingStructureFurnace><color=green>Furnace</color></link> to create <link=AlloysPage><color=#0080FFFF>alloys</color></link>, or use it in the <link=ThingApplianceReagentProcessor><color=green>Reagent Processor</color></link> to make <link=ThingItemSprayCanBlack><color=green>Spray Paint (Black)</color></link>."
.into(),
name: "Ore (Coal)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Hydrocarbon".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-983091249i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCobaltOre".into(),
prefab_hash: -983091249i32,
desc: "Cobalt is a chemical element with the symbol \"Co\" and is typically found in only small deposits. Cobalt is a rare substance, but used create the <link=ThingItemHealPill><color=green>Heal Pill</color></link> and several <link=IngotPage><color=#0080FFFF>alloys</color></link>."
.into(),
name: "Ore (Cobalt)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Cobalt".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
457286516i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCocoaPowder".into(),
prefab_hash: 457286516i32,
desc: "".into(),
name: "Cocoa Powder".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 20u32,
reagents: Some(vec![("Cocoa".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
680051921i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCocoaTree".into(),
prefab_hash: 680051921i32,
desc: "".into(),
name: "Cocoa".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 20u32,
reagents: Some(vec![("Cocoa".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1800622698i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCoffeeMug".into(),
prefab_hash: 1800622698i32,
desc: "".into(),
name: "Coffee Mug".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1058547521i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemConstantanIngot".into(),
prefab_hash: 1058547521i32,
desc: "".into(),
name: "Ingot (Constantan)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Constantan".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1715917521i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCookedCondensedMilk".into(),
prefab_hash: 1715917521i32,
desc: "A high-nutrient cooked food, which can be canned.".into(),
name: "Condensed Milk".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 10u32,
reagents: Some(vec![("Milk".into(), 100f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1344773148i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCookedCorn".into(),
prefab_hash: 1344773148i32,
desc: "A high-nutrient cooked food, which can be canned.".into(),
name: "Cooked Corn".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 10u32,
reagents: Some(vec![("Corn".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1076892658i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCookedMushroom".into(),
prefab_hash: -1076892658i32,
desc: "A high-nutrient cooked food, which can be canned.".into(),
name: "Cooked Mushroom".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 10u32,
reagents: Some(vec![("Mushroom".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1712264413i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCookedPowderedEggs".into(),
prefab_hash: -1712264413i32,
desc: "A high-nutrient cooked food, which can be canned.".into(),
name: "Powdered Eggs".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 10u32,
reagents: Some(vec![("Egg".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1849281546i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCookedPumpkin".into(),
prefab_hash: 1849281546i32,
desc: "A high-nutrient cooked food, which can be canned.".into(),
name: "Cooked Pumpkin".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 10u32,
reagents: Some(vec![("Pumpkin".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2013539020i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCookedRice".into(),
prefab_hash: 2013539020i32,
desc: "A high-nutrient cooked food, which can be canned.".into(),
name: "Cooked Rice".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 10u32,
reagents: Some(vec![("Rice".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1353449022i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCookedSoybean".into(),
prefab_hash: 1353449022i32,
desc: "A high-nutrient cooked food, which can be canned.".into(),
name: "Cooked Soybean".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 10u32,
reagents: Some(vec![("Soy".into(), 5f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-709086714i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCookedTomato".into(),
prefab_hash: -709086714i32,
desc: "A high-nutrient cooked food, which can be canned.".into(),
name: "Cooked Tomato".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 10u32,
reagents: Some(vec![("Tomato".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-404336834i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCopperIngot".into(),
prefab_hash: -404336834i32,
desc: "Copper ingots are created by smelting <link=ThingItemCopperOre><color=green>Ore (Copper)</color></link> in the <link=ThingStructureFurnace><color=green>Furnace</color></link> and <link=ThingStructureArcFurnace><color=green>Arc Furnace</color></link>, and used to create a variety of items."
.into(),
name: "Ingot (Copper)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Copper".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-707307845i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCopperOre".into(),
prefab_hash: -707307845i32,
desc: "Copper is a chemical element with the symbol \"Cu\". This common and highly conductive material is found on most astronomical bodies and is used in a variety of manufacturing processes including electronic components, alloys, and wires."
.into(),
name: "Ore (Copper)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Copper".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
258339687i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCorn".into(),
prefab_hash: 258339687i32,
desc: "A long growth time staple crop. Its low requirement for darkness allows for accelerated growing if provided with extra light."
.into(),
name: "Corn".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 20u32,
reagents: Some(vec![("Corn".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
545034114i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCornSoup".into(),
prefab_hash: 545034114i32,
desc: "Made using <link=ThingItemCookedCorn><color=green>Cooked Corn</color></link> and an <link=ThingItemEmptyCan><color=green>Empty Can</color></link> in a <link=ThingAppliancePackagingMachine><color=green>Basic Packaging Machine</color></link> or <link=ThingStructureAdvancedPackagingMachine><color=green>Advanced Packaging Machine</color></link>. Faily high in nutrition, canned food does not <link=DecayPage><color=#0080FFFF>decay</color></link>."
.into(),
name: "Corn Soup".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1756772618i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCreditCard".into(),
prefab_hash: -1756772618i32,
desc: "".into(),
name: "Credit Card".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100000u32,
reagents: None,
slot_class: Class::CreditCard,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
215486157i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCropHay".into(),
prefab_hash: 215486157i32,
desc: "".into(),
name: "Hay".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
856108234i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemCrowbar".into(),
prefab_hash: 856108234i32,
desc: "<link=Recurso><color=#0080FFFF>Recurso\'s</color></link> entry-level crowbar is useful in a variety of everyday <link=Stationeers><color=#0080FFFF>Stationeer</color></link> settings, from opening <link=ThingStructureAreaPowerControl><color=green>Area Power Control</color></link>s and unpowered <link=ThingStructureAirlock><color=green>Airlock</color></link>s, to splatting pan-dimensional headcrabs, should the need arise."
.into(),
name: "Crowbar".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1005843700i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemDataDisk".into(),
prefab_hash: 1005843700i32,
desc: "".into(),
name: "Data Disk".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::DataDisk,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
902565329i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemDirtCanister".into(),
prefab_hash: 902565329i32,
desc: "A container the will fill with Dirt when using a <link=ThingItemMiningDrill><color=green>Mining Drill</color></link> when placed inside a <link=ThingItemMiningBelt><color=green>Mining Belt</color></link>. You can then use this <link=SlotDirtCanister><color=orange>Dirt Canister</color></link> with the <link=ThingItemTerrainManipulator><color=green>Terrain Manipulator</color></link> to adjust the terrain to suit your needs."
.into(),
name: "Dirt Canister".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1234745580i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemDirtyOre".into(),
prefab_hash: -1234745580i32,
desc: "Ore mined from bedrock via the <link=ThingStructureDeepMiner><color=green>Deep Miner</color></link> which then can be used in the <link=ThingStructureCentrifuge><color=green>Centrifuge</color></link>, or <link=ThingStructureCombustionCentrifuge><color=green>Combustion Centrifuge</color></link>. Once processed, it produces ore in a ratio similar to the average found on the planet\'s surface. "
.into(),
name: "Dirty Ore".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2124435700i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemDisposableBatteryCharger".into(),
prefab_hash: -2124435700i32,
desc: "Consumable battery the recharges your suit battery. If used on a HEM-Droid it will recharge the HEM-Droids internal battery."
.into(),
name: "Disposable Battery Charger".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2009673399i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemDrill".into(),
prefab_hash: 2009673399i32,
desc: "The <link=ExMin><color=#0080FFFF>ExMin</color></link> Off-whirled Hand Drill has been a companion to <link=Stationeers><color=#0080FFFF>Stationeers</color></link> for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature."
.into(),
name: "Hand Drill".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1943134693i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemDuctTape".into(),
prefab_hash: -1943134693i32,
desc: "In the distant past, one of Earth\'s great champions taught a generation of \'Fix-It People\' that duct tape was the answer to any problem. <link=Stationeers><color=#0080FFFF>Stationeers</color></link> have demonstrated that this is truth holds strong, so long as the problem is a damaged <link=ThingItemEvaSuit><color=green>Eva Suit</color></link>, <link=ThingItemJetpackBasic><color=green>Jetpack Basic</color></link>, <link=ThingItemSpaceHelmet><color=green>Space Helmet</color></link>, or even a <link=ThingStructureSolarPanel><color=green>Solar Panel</color></link>.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage."
.into(),
name: "Duct Tape".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1072914031i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemDynamicAirCon".into(),
prefab_hash: 1072914031i32,
desc: "".into(),
name: "Kit (Portable Air Conditioner)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-971920158i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemDynamicScrubber".into(),
prefab_hash: -971920158i32,
desc: "".into(),
name: "Kit (Portable Scrubber)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-524289310i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemEggCarton".into(),
prefab_hash: -524289310i32,
desc: "Within, eggs reside in mysterious, marmoreal silence.".into(),
name: "Egg Carton".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Storage,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::Egg }, SlotInfo { name : ""
.into(), typ : Class::Egg }, SlotInfo { name : "".into(), typ :
Class::Egg }, SlotInfo { name : "".into(), typ : Class::Egg }, SlotInfo {
name : "".into(), typ : Class::Egg }, SlotInfo { name : "".into(), typ :
Class::Egg }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
731250882i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemElectronicParts".into(),
prefab_hash: 731250882i32,
desc: "".into(),
name: "Electronic Parts".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 20u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
502280180i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemElectrumIngot".into(),
prefab_hash: 502280180i32,
desc: "".into(),
name: "Ingot (Electrum)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Electrum".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-351438780i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyAngleGrinder".into(),
prefab_hash: -351438780i32,
desc: "".into(),
name: "Emergency Angle Grinder".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1056029600i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyArcWelder".into(),
prefab_hash: -1056029600i32,
desc: "".into(),
name: "Emergency Arc Welder".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
976699731i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyCrowbar".into(),
prefab_hash: 976699731i32,
desc: "".into(),
name: "Emergency Crowbar".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2052458905i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyDrill".into(),
prefab_hash: -2052458905i32,
desc: "".into(),
name: "Emergency Drill".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1791306431i32,
ItemSuitTemplate {
templateType: "ItemSuit".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyEvaSuit".into(),
prefab_hash: 1791306431i32,
desc: "".into(),
name: "Emergency Eva Suit".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Suit,
sorting_class: SortingClass::Clothing,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.2f32,
radiation_factor: 0.2f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }),
slots: vec![
SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, SlotInfo
{ name : "Waste Tank".into(), typ : Class::GasCanister }, SlotInfo { name
: "Life Support".into(), typ : Class::Battery }, SlotInfo { name :
"Filter".into(), typ : Class::GasFilter }, SlotInfo { name : "Filter"
.into(), typ : Class::GasFilter }, SlotInfo { name : "Filter".into(), typ
: Class::GasFilter }
]
.into_iter()
.collect(),
suit_info: SuitInfo {
hygine_reduction_multiplier: 1f32,
waste_max_pressure: 4053f32,
},
}
.into(),
);
map.insert(
-1061510408i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyPickaxe".into(),
prefab_hash: -1061510408i32,
desc: "".into(),
name: "Emergency Pickaxe".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
266099983i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyScrewdriver".into(),
prefab_hash: 266099983i32,
desc: "".into(),
name: "Emergency Screwdriver".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
205916793i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencySpaceHelmet".into(),
prefab_hash: 205916793i32,
desc: "".into(),
name: "Emergency Space Helmet".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Helmet,
sorting_class: SortingClass::Clothing,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 3f32 }),
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read), (LogicType::Flush,
MemoryAccess::Write), (LogicType::SoundAlert,
MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
1661941301i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyToolBelt".into(),
prefab_hash: 1661941301i32,
desc: "".into(),
name: "Emergency Tool Belt".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Belt,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ
: Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool },
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ
: Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
2102803952i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyWireCutters".into(),
prefab_hash: 2102803952i32,
desc: "".into(),
name: "Emergency Wire Cutters".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
162553030i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmergencyWrench".into(),
prefab_hash: 162553030i32,
desc: "".into(),
name: "Emergency Wrench".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1013818348i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemEmptyCan".into(),
prefab_hash: 1013818348i32,
desc: "Used for making soups when combined with food in the <link=ThingAppliancePackagingMachine><color=green>Basic Packaging Machine</color></link> or <link=ThingStructureAdvancedPackagingMachine><color=green>Advanced Packaging Machine</color></link>. Fairly high in nutrition, canned food does not <link=DecayPage><color=#0080FFFF>decay</color></link>."
.into(),
name: "Empty Can".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 10u32,
reagents: Some(vec![("Steel".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1677018918i32,
ItemSuitTemplate {
templateType: "ItemSuit".into(),
prefab: PrefabInfo {
prefab_name: "ItemEvaSuit".into(),
prefab_hash: 1677018918i32,
desc: "The EVA suit is the basic suit <link=Stationeers><color=#0080FFFF>Stationeers</color></link> need to survive in the inhospitable environment of space. For more information on EVA suits, consult the <link=EVAPage><color=#0080FFFF>EVA suit</color></link> guide."
.into(),
name: "Eva Suit".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Suit,
sorting_class: SortingClass::Clothing,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.2f32,
radiation_factor: 0.2f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }),
slots: vec![
SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, SlotInfo
{ name : "Waste Tank".into(), typ : Class::GasCanister }, SlotInfo { name
: "Life Support".into(), typ : Class::Battery }, SlotInfo { name :
"Filter".into(), typ : Class::GasFilter }, SlotInfo { name : "Filter"
.into(), typ : Class::GasFilter }, SlotInfo { name : "Filter".into(), typ
: Class::GasFilter }
]
.into_iter()
.collect(),
suit_info: SuitInfo {
hygine_reduction_multiplier: 1f32,
waste_max_pressure: 4053f32,
},
}
.into(),
);
map.insert(
235361649i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemExplosive".into(),
prefab_hash: 235361649i32,
desc: "".into(),
name: "Remote Explosive".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
892110467i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFern".into(),
prefab_hash: 892110467i32,
desc: "There was a time, when Stationeers had to make <link=ThingReagentFenoxitone><color=green>Fenoxitone Powder</color></link> using the <link=ThingApplianceReagentProcessor><color=green>Reagent Processor</color></link>. Recent advances in technology allow you to use equivalent quantities of fern directly in recipes."
.into(),
name: "Fern".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("Fenoxitone".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-383972371i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFertilizedEgg".into(),
prefab_hash: -383972371i32,
desc: "To hatch it requires an incubation temperature of between 35 and 45 degrees Celsius and will hatch into a <link=ThingNpcChick><color=green>Chick</color></link>. If the egg is exposed to tepratures below 10 degrees it will no longer be viable."
.into(),
name: "Egg".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 1u32,
reagents: Some(vec![("Egg".into(), 1f64)].into_iter().collect()),
slot_class: Class::Egg,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
266654416i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFilterFern".into(),
prefab_hash: 266654416i32,
desc: "A fern adapted by <link=Agrizero><color=#0080FFFF>Agrizero</color></link>to process a much greater volume of <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link> into <link=GasOxygen><color=#44AD83>Oxygen</color></link> than an average plant."
.into(),
name: "Darga Fern".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2011191088i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFlagSmall".into(),
prefab_hash: 2011191088i32,
desc: "".into(),
name: "Kit (Small Flag)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2107840748i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFlashingLight".into(),
prefab_hash: -2107840748i32,
desc: "".into(),
name: "Kit (Flashing Light)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-838472102i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemFlashlight".into(),
prefab_hash: -838472102i32,
desc: "A flashlight with a narrow and wide beam options.".into(),
name: "Flashlight".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Low Power".into()), (1u32, "High Power".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-665995854i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFlour".into(),
prefab_hash: -665995854i32,
desc: "Pulverized <link=ThingItemWheat><color=green>Wheat</color></link>, a key ingredient in many foods created by the <link=ThingApplianceMicrowave><color=green>Microwave</color></link> and the <link=ThingItemKitAutomatedOven><color=green>Kit (Automated Oven)</color></link>."
.into(),
name: "Flour".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Flour".into(), 50f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1573623434i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFlowerBlue".into(),
prefab_hash: -1573623434i32,
desc: "".into(),
name: "Flower (Blue)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1513337058i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFlowerGreen".into(),
prefab_hash: -1513337058i32,
desc: "".into(),
name: "Flower (Green)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1411986716i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFlowerOrange".into(),
prefab_hash: -1411986716i32,
desc: "".into(),
name: "Flower (Orange)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-81376085i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFlowerRed".into(),
prefab_hash: -81376085i32,
desc: "".into(),
name: "Flower (Red)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1712822019i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFlowerYellow".into(),
prefab_hash: 1712822019i32,
desc: "".into(),
name: "Flower (Yellow)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-57608687i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFrenchFries".into(),
prefab_hash: -57608687i32,
desc: "Because space would suck without \'em.".into(),
name: "Canned French Fries".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1371786091i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemFries".into(),
prefab_hash: 1371786091i32,
desc: "".into(),
name: "French Fries".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-767685874i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterCarbonDioxide".into(),
prefab_hash: -767685874i32,
desc: "".into(),
name: "Canister (CO2)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }),
}
.into(),
);
map.insert(
42280099i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterEmpty".into(),
prefab_hash: 42280099i32,
desc: "".into(),
name: "Canister".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }),
}
.into(),
);
map.insert(
-1014695176i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterFuel".into(),
prefab_hash: -1014695176i32,
desc: "".into(),
name: "Canister (Fuel)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }),
}
.into(),
);
map.insert(
2145068424i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterNitrogen".into(),
prefab_hash: 2145068424i32,
desc: "".into(),
name: "Canister (Nitrogen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }),
}
.into(),
);
map.insert(
-1712153401i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterNitrousOxide".into(),
prefab_hash: -1712153401i32,
desc: "".into(),
name: "Gas Canister (Sleeping)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }),
}
.into(),
);
map.insert(
-1152261938i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterOxygen".into(),
prefab_hash: -1152261938i32,
desc: "".into(),
name: "Canister (Oxygen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }),
}
.into(),
);
map.insert(
-1552586384i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterPollutants".into(),
prefab_hash: -1552586384i32,
desc: "".into(),
name: "Canister (Pollutants)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }),
}
.into(),
);
map.insert(
-668314371i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterSmart".into(),
prefab_hash: -668314371i32,
desc: "0.Mode0\n1.Mode1".into(),
name: "Gas Canister (Smart)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }),
}
.into(),
);
map.insert(
-472094806i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterVolatiles".into(),
prefab_hash: -472094806i32,
desc: "".into(),
name: "Canister (Volatiles)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 64f32 }),
}
.into(),
);
map.insert(
-1854861891i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasCanisterWater".into(),
prefab_hash: -1854861891i32,
desc: "".into(),
name: "Liquid Canister (Water)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::LiquidCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo {
volume: 12.1f32,
}),
}
.into(),
);
map.insert(
1635000764i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterCarbonDioxide".into(),
prefab_hash: 1635000764i32,
desc: "Given humanity\'s obsession with exhaling <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link>, all <link=Stationeers><color=#0080FFFF>Stationeers</color></link> are issued two basic <link=Sinotai><color=#0080FFFF>Sinotai</color></link> <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link> <link=SlotGasFilter><color=orange>Gas Filter</color></link> as part of their standard deployment kit (SDK). These filters allow passage of <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link> into the suit\'s waste <link=ThingItemGasCanisterEmpty><color=green>Canister</color></link>, but are also critical components of the <link=ThingDynamicScrubber><color=green>Portable Air Scrubber</color></link> and the <link=ThingStructureFiltration><color=green>Filtration</color></link>. The <link=ThingItemGasFilterCarbonDioxideM><color=green>Medium Filter (Carbon Dioxide)</color></link> and <link=ThingItemGasFilterCarbonDioxideL><color=green>Heavy Filter (Carbon Dioxide)</color></link> are also available."
.into(),
name: "Filter (Carbon Dioxide)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::CarbonDioxide),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-185568964i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterCarbonDioxideInfinite".into(),
prefab_hash: -185568964i32,
desc: "A filter that selectively targets Carbon Dioxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."
.into(),
name: "Catalytic Filter (Carbon Dioxide)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::CarbonDioxide),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1876847024i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterCarbonDioxideL".into(),
prefab_hash: 1876847024i32,
desc: "".into(),
name: "Heavy Filter (Carbon Dioxide)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::CarbonDioxide),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
416897318i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterCarbonDioxideM".into(),
prefab_hash: 416897318i32,
desc: "".into(),
name: "Medium Filter (Carbon Dioxide)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::CarbonDioxide),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
632853248i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterNitrogen".into(),
prefab_hash: 632853248i32,
desc: "Filters are used to capture various gases, which can be disposed of or used elsewhere. <link=GasNitrogen><color=#44AD83>Nitrogen</color></link> is a byproduct of smelting various ores, notably <link=ThingItemNitrice><color=green>Ice (Nitrice)</color></link>, which may be combined with <link=GasOxygen><color=#44AD83>Oxygen</color></link> to make a breathable - and considerably less flammable - atmosphere."
.into(),
name: "Filter (Nitrogen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Nitrogen),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
152751131i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterNitrogenInfinite".into(),
prefab_hash: 152751131i32,
desc: "A filter that selectively targets Nitrogen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."
.into(),
name: "Catalytic Filter (Nitrogen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Nitrogen),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1387439451i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterNitrogenL".into(),
prefab_hash: -1387439451i32,
desc: "".into(),
name: "Heavy Filter (Nitrogen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Nitrogen),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-632657357i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterNitrogenM".into(),
prefab_hash: -632657357i32,
desc: "".into(),
name: "Medium Filter (Nitrogen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Nitrogen),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1247674305i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterNitrousOxide".into(),
prefab_hash: -1247674305i32,
desc: "".into(),
name: "Filter (Nitrous Oxide)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::NitrousOxide),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-123934842i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterNitrousOxideInfinite".into(),
prefab_hash: -123934842i32,
desc: "A filter that selectively targets Nitrous Oxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."
.into(),
name: "Catalytic Filter (Nitrous Oxide)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::NitrousOxide),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
465267979i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterNitrousOxideL".into(),
prefab_hash: 465267979i32,
desc: "".into(),
name: "Heavy Filter (Nitrous Oxide)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::NitrousOxide),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1824284061i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterNitrousOxideM".into(),
prefab_hash: 1824284061i32,
desc: "".into(),
name: "Medium Filter (Nitrous Oxide)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::NitrousOxide),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-721824748i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterOxygen".into(),
prefab_hash: -721824748i32,
desc: "<link=Sinotai><color=#0080FFFF>Sinotai</color></link> have cornered the market in filter design. Their trademarked templates are simple to print and highly efficient at capturing various gases, which can be disposed of or used elsewhere. <link=GasOxygen><color=#44AD83>Oxygen</color></link> is a common byproduct of smelting various ores, but must be filtered of such impurities as <link=GasNitrogen><color=#44AD83>Nitrogen</color></link> using this filter and various devices, such as the <link=ThingItemDynamicScrubber><color=green>Kit (Portable Scrubber)</color></link>."
.into(),
name: "Filter (Oxygen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Oxygen),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1055451111i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterOxygenInfinite".into(),
prefab_hash: -1055451111i32,
desc: "A filter that selectively targets Oxygen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."
.into(),
name: "Catalytic Filter (Oxygen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Oxygen),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1217998945i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterOxygenL".into(),
prefab_hash: -1217998945i32,
desc: "".into(),
name: "Heavy Filter (Oxygen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Oxygen),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1067319543i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterOxygenM".into(),
prefab_hash: -1067319543i32,
desc: "".into(),
name: "Medium Filter (Oxygen)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Oxygen),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1915566057i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterPollutants".into(),
prefab_hash: 1915566057i32,
desc: "Filters are used to capture various gases, such as waste emissions from a <link=ThingStructureFurnace><color=green>Furnace</color></link> or <link=ThingStructureArcFurnace><color=green>Arc Furnace</color></link>. Adding <link=Sinotai><color=#0080FFFF>Sinotai</color></link>-designed <link=GasPollutant><color=#44AD83>Pollutant</color></link> filters to a <link=ThingItemDynamicScrubber><color=green>Kit (Portable Scrubber)</color></link> allows you to isolate this gas, then add it to a pipe network and employ its excellent coolant properties in a <link=ThingStructureWallCooler><color=green>Wall Cooler</color></link>. Try not to inhale."
.into(),
name: "Filter (Pollutant)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Pollutant),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-503738105i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterPollutantsInfinite".into(),
prefab_hash: -503738105i32,
desc: "A filter that selectively targets Pollutants. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."
.into(),
name: "Catalytic Filter (Pollutants)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Pollutant),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1959564765i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterPollutantsL".into(),
prefab_hash: 1959564765i32,
desc: "".into(),
name: "Heavy Filter (Pollutants)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Pollutant),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
63677771i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterPollutantsM".into(),
prefab_hash: 63677771i32,
desc: "".into(),
name: "Medium Filter (Pollutants)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Pollutant),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
15011598i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterVolatiles".into(),
prefab_hash: 15011598i32,
desc: "Filters are used to capture various gases, which can be disposed of or used elsewhere. <link=GasVolatiles><color=#44AD83>Volatiles</color></link> are created by exposing <link=ThingItemVolatiles><color=green>Ice (Volatiles)</color></link> to heat. The product can then be collected and combined with <link=GasOxygen><color=#44AD83>Oxygen</color></link> to create fuel, or used within a <link=ThingStructureFurnace><color=green>Furnace</color></link> to smelt ores and create <link=IngotPage><color=#0080FFFF>alloys</color></link>."
.into(),
name: "Filter (Volatiles)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Volatiles),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1916176068i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterVolatilesInfinite".into(),
prefab_hash: -1916176068i32,
desc: "A filter that selectively targets <link=GasVolatiles><color=#44AD83>Volatiles</color></link>. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."
.into(),
name: "Catalytic Filter (Volatiles)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Volatiles),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1255156286i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterVolatilesL".into(),
prefab_hash: 1255156286i32,
desc: "".into(),
name: "Heavy Filter (Volatiles)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Volatiles),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1037507240i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterVolatilesM".into(),
prefab_hash: 1037507240i32,
desc: "".into(),
name: "Medium Filter (Volatiles)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Volatiles),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1993197973i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterWater".into(),
prefab_hash: -1993197973i32,
desc: "<link=Sinotai><color=#0080FFFF>Sinotai</color></link> filters are used to capture various gases, which can be disposed of, or used elsewhere. <link=GasWater><color=#44AD83>Water</color></link> can be collected by filtering smelted <link=ThingItemIce><color=green>Ice (Water)</color></link>"
.into(),
name: "Filter (Water)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Steam),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1678456554i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterWaterInfinite".into(),
prefab_hash: -1678456554i32,
desc: "A filter that selectively targets Water. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."
.into(),
name: "Catalytic Filter (Water)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Steam),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2004969680i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterWaterL".into(),
prefab_hash: 2004969680i32,
desc: "".into(),
name: "Heavy Filter (Water)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Steam),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
8804422i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasFilterWaterM".into(),
prefab_hash: 8804422i32,
desc: "".into(),
name: "Medium Filter (Water)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: Some(GasType::Steam),
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::GasFilter,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1717593480i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasSensor".into(),
prefab_hash: 1717593480i32,
desc: "".into(),
name: "Kit (Gas Sensor)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2113012215i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGasTankStorage".into(),
prefab_hash: -2113012215i32,
desc: "This kit produces a <link=ThingItemGasTankStorage><color=green>Kit (Canister Storage)</color></link> for refilling a <link=ThingItemGasCanisterEmpty><color=green>Canister</color></link>."
.into(),
name: "Kit (Canister Storage)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1588896491i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGlassSheets".into(),
prefab_hash: 1588896491i32,
desc: "A fundamental construction component, glass sheets are created from <link=ReagentSilicon><color=#B566FF>Silicon</color></link>. Fabricated on the <link=ThingStructureAutolathe><color=green>Autolathe</color></link>, they are used to make {THING:StructureSolarPanel;Solar Panels}, <link=ThingStructureAirlock;Airlocks><color=green><N:EN:StructureAirlock;Airlocks></color></link> and many other structures."
.into(),
name: "Glass Sheets".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1068925231i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGlasses".into(),
prefab_hash: -1068925231i32,
desc: "".into(),
name: "Glasses".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Glasses,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
226410516i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGoldIngot".into(),
prefab_hash: 226410516i32,
desc: "There is an enduring paradox at the heart of the <link=Stationeers><color=#0080FFFF>Stationeers</color></link> project: An initiative conceived as \'cut-price space exploration\' uses <link=ReagentGold><color=#B566FF>Gold</color></link> as a fundamental ingredient in fabricating so much of its equipment and materiel. "
.into(),
name: "Ingot (Gold)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Gold".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1348105509i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGoldOre".into(),
prefab_hash: -1348105509i32,
desc: "Surprisingly common throughout the Solar System, <link=ReagentGold><color=#B566FF>Gold</color></link> is thought to originate in the heart of supernovas, gathering as dust in the early stages of solar formation, then incorporating into the slowly accreting planetary bodies. Now a prized element in <link=Stationeers><color=#0080FFFF>Stationeer</color></link> construction, <link=ReagentGold><color=#B566FF>Gold</color></link> is valued not for its beauty, but its reliability: inert, durable, conductive and highly stable, gold\'s strength is that it does nothing."
.into(),
name: "Ore (Gold)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Gold".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1544275894i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemGrenade".into(),
prefab_hash: 1544275894i32,
desc: "Invented by the Romans, who threw Greek Fire at their enemies in ceramic jars, the word \'grenade\' is derived from the Old French word for \'pomegranate\', as many modern grenades resemble this round, many-seeded fruit. Also like many grenades before it, this one goes boom and breaks stuff."
.into(),
name: "Hand Grenade".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
470636008i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemHEMDroidRepairKit".into(),
prefab_hash: 470636008i32,
desc: "Repairs damaged HEM-Droids to full health.".into(),
name: "HEMDroid Repair Kit".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
374891127i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemHardBackpack".into(),
prefab_hash: 374891127i32,
desc: "This backpack can be useful when you are working inside and don\'t need to fly around."
.into(),
name: "Hardsuit Backpack".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Back,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (3u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (4u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (5u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (6u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (7u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (8u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (9u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (10u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (11u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-412551656i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemHardJetpack".into(),
prefab_hash: -412551656i32,
desc: "The <link=Norsec><color=#0080FFFF>Norsec</color></link> jetpack isn\'t \'technically\' a jetpack at all, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the <link=AtmosphericsPage><color=#0080FFFF>canister</color></link> is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nThe hardsuit jetpack is capable of much higher speeds than the <link=ThingItemJetpackBasic><color=green>Jetpack Basic</color></link> - up to 15m/s. Indispensable for building, mining and general movement, it has fourteen storage slots.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move."
.into(),
name: "Hardsuit Jetpack".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Back,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (3u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (4u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (5u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (6u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (7u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (8u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (9u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (10u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (11u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (12u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (13u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (14u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Propellant".into(), typ : Class::GasCanister },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
900366130i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemHardMiningBackPack".into(),
prefab_hash: 900366130i32,
desc: "".into(),
name: "Hard Mining Backpack".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Back,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1758310454i32,
ItemSuitCircuitHolderTemplate {
templateType: "ItemSuitCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "ItemHardSuit".into(),
prefab_hash: -1758310454i32,
desc: "Connects to <pos=300><link=ThingStructureLogicTransmitter><color=green>Logic Transmitter</color></link>"
.into(),
name: "Hardsuit".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Suit,
sorting_class: SortingClass::Clothing,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 10f32 }),
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (4u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (6u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (7u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read),
(LogicType::PressureExternal, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite),
(LogicType::PressureSetting, MemoryAccess::ReadWrite),
(LogicType::TemperatureSetting, MemoryAccess::ReadWrite),
(LogicType::TemperatureExternal, MemoryAccess::Read),
(LogicType::Filtration, MemoryAccess::ReadWrite),
(LogicType::AirRelease, MemoryAccess::ReadWrite),
(LogicType::PositionX, MemoryAccess::Read), (LogicType::PositionY,
MemoryAccess::Read), (LogicType::PositionZ, MemoryAccess::Read),
(LogicType::VelocityMagnitude, MemoryAccess::Read),
(LogicType::VelocityRelativeX, MemoryAccess::Read),
(LogicType::VelocityRelativeY, MemoryAccess::Read),
(LogicType::VelocityRelativeZ, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read), (LogicType::SoundAlert,
MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::ForwardX,
MemoryAccess::Read), (LogicType::ForwardY, MemoryAccess::Read),
(LogicType::ForwardZ, MemoryAccess::Read), (LogicType::Orientation,
MemoryAccess::Read), (LogicType::VelocityX, MemoryAccess::Read),
(LogicType::VelocityY, MemoryAccess::Read), (LogicType::VelocityZ,
MemoryAccess::Read), (LogicType::EntityState, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: true,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, SlotInfo
{ name : "Waste Tank".into(), typ : Class::GasCanister }, SlotInfo { name
: "Life Support".into(), typ : Class::Battery }, SlotInfo { name :
"Programmable Chip".into(), typ : Class::ProgrammableChip }, SlotInfo {
name : "Filter".into(), typ : Class::GasFilter }, SlotInfo { name :
"Filter".into(), typ : Class::GasFilter }, SlotInfo { name : "Filter"
.into(), typ : Class::GasFilter }, SlotInfo { name : "Filter".into(), typ
: Class::GasFilter }
]
.into_iter()
.collect(),
suit_info: SuitInfo {
hygine_reduction_multiplier: 1.5f32,
waste_max_pressure: 4053f32,
},
memory: MemoryInfo {
instructions: None,
memory_access: MemoryAccess::ReadWrite,
memory_size: 0u32,
},
}
.into(),
);
map.insert(
-84573099i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemHardsuitHelmet".into(),
prefab_hash: -84573099i32,
desc: "The Hardsuit Helmet is similar to the <link=ThingItemSpaceHelmet><color=green>Space Helmet</color></link>, but can withstand higher temperatures and pressures. It\'s perfect for enduring harsh environments like Venus and Vulcan."
.into(),
name: "Hardsuit Helmet".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Helmet,
sorting_class: SortingClass::Clothing,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 3f32 }),
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read), (LogicType::Flush,
MemoryAccess::Write), (LogicType::SoundAlert,
MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
1579842814i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemHastelloyIngot".into(),
prefab_hash: 1579842814i32,
desc: "".into(),
name: "Ingot (Hastelloy)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Hastelloy".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
299189339i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemHat".into(),
prefab_hash: 299189339i32,
desc: "As the name suggests, this is a hat.".into(),
name: "Hat".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Helmet,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
998653377i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemHighVolumeGasCanisterEmpty".into(),
prefab_hash: 998653377i32,
desc: "".into(),
name: "High Volume Gas Canister".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::GasCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 83f32 }),
}
.into(),
);
map.insert(
-1117581553i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemHorticultureBelt".into(),
prefab_hash: -1117581553i32,
desc: "".into(),
name: "Horticulture Belt".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Belt,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "Plant".into(), typ
: Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant },
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(),
typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ :
Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant },
SlotInfo { name : "Plant".into(), typ : Class::Plant }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1193543727i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemHydroponicTray".into(),
prefab_hash: -1193543727i32,
desc: "This kits creates a <link=ThingStructureHydroponicsTray><color=green>Hydroponics Tray</color></link> for growing various plants."
.into(),
name: "Kit (Hydroponic Tray)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1217489948i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemIce".into(),
prefab_hash: 1217489948i32,
desc: "Water ice can be found on most planets in the Solar System, though not all worlds visited by <link=Stationeers><color=#0080FFFF>Stationeers</color></link> possess this resource. Highly sensitive to temperature, ice will begin to melt as soon as it is mined, unless kept in the <link=ThingItemMiningBelt><color=green>Mining Belt</color></link>. When melting, ice produces a mixture of <link=GasSteam><color=#44AD83>Steam</color></link> and <link=GasNitrogen><color=#44AD83>Nitrogen</color></link> gas."
.into(),
name: "Ice (Water)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
890106742i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemIgniter".into(),
prefab_hash: 890106742i32,
desc: "This kit creates an <link=ThingItemIgniter><color=green>Kit (Igniter)</color></link> unit."
.into(),
name: "Kit (Igniter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-787796599i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemInconelIngot".into(),
prefab_hash: -787796599i32,
desc: "".into(),
name: "Ingot (Inconel)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Inconel".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
897176943i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemInsulation".into(),
prefab_hash: 897176943i32,
desc: "Mysterious in the extreme, the function of this item is lost to the ages."
.into(),
name: "Insulation".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-744098481i32,
ItemLogicMemoryTemplate {
templateType: "ItemLogicMemory".into(),
prefab: PrefabInfo {
prefab_name: "ItemIntegratedCircuit10".into(),
prefab_hash: -744098481i32,
desc: "".into(),
name: "Integrated Circuit (IC10)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::ProgrammableChip,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::LineNumber, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
memory: MemoryInfo {
instructions: None,
memory_access: MemoryAccess::ReadWrite,
memory_size: 512u32,
},
}
.into(),
);
map.insert(
-297990285i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemInvarIngot".into(),
prefab_hash: -297990285i32,
desc: "".into(),
name: "Ingot (Invar)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Invar".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1225836666i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemIronFrames".into(),
prefab_hash: 1225836666i32,
desc: "".into(),
name: "Iron Frames".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 30u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1301215609i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemIronIngot".into(),
prefab_hash: -1301215609i32,
desc: "The most basic unit of construction available to <link=Stationeers><color=#0080FFFF>Stationeer</color></link>-kind, iron ingots are created by smelting <link=ThingItemIronOre><color=green>Ore (Iron)</color></link> in the <link=ThingStructureFurnace><color=green>Furnace</color></link> and <link=ThingStructureArcFurnace><color=green>Arc Furnace</color></link>, and used to create a variety of items."
.into(),
name: "Ingot (Iron)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Iron".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1758427767i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemIronOre".into(),
prefab_hash: 1758427767i32,
desc: "Abundant throughout the Solar System, iron is the <link=OrePage><color=#0080FFFF>ore</color></link> most commonly used by <link=Stationeers><color=#0080FFFF>Stationeers</color></link> constructing offworld bases. It can be smelted into both <link=ThingItemIronIngot><color=green>Ingot (Iron)</color></link>s and <link=ThingItemSteelIngot><color=green>Ingot (Steel)</color></link>s."
.into(),
name: "Ore (Iron)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Iron".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-487378546i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemIronSheets".into(),
prefab_hash: -487378546i32,
desc: "".into(),
name: "Iron Sheets".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1969189000i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemJetpackBasic".into(),
prefab_hash: 1969189000i32,
desc: "The basic <link=CHAC><color=#0080FFFF>CHAC</color></link> jetpack isn\'t \'technically\' a jetpack, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the <link=AtmosphericsPage><color=#0080FFFF>canister</color></link> is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets <link=Stationeers><color=#0080FFFF>Stationeers</color></link> fly at 3m/s, compared to the more powerful <link=ThingItemHardJetpack><color=green>Hardsuit Jetpack</color></link>. Adjusting the thrust value alters your rate of acceleration, while activating the stabilizer causes the spacepack to hover when a given height is reached.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move."
.into(),
name: "Jetpack Basic".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Back,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (3u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (4u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (5u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (6u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (7u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (8u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (9u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Propellant".into(), typ : Class::GasCanister },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
496830914i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAIMeE".into(),
prefab_hash: 496830914i32,
desc: "".into(),
name: "Kit (AIMeE)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
513258369i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAccessBridge".into(),
prefab_hash: 513258369i32,
desc: "".into(),
name: "Kit (Access Bridge)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1431998347i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAdvancedComposter".into(),
prefab_hash: -1431998347i32,
desc: "".into(),
name: "Kit (Advanced Composter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-616758353i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAdvancedFurnace".into(),
prefab_hash: -616758353i32,
desc: "".into(),
name: "Kit (Advanced Furnace)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-598545233i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAdvancedPackagingMachine".into(),
prefab_hash: -598545233i32,
desc: "".into(),
name: "Kit (Advanced Packaging Machine)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
964043875i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAirlock".into(),
prefab_hash: 964043875i32,
desc: "".into(),
name: "Kit (Airlock)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
682546947i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAirlockGate".into(),
prefab_hash: 682546947i32,
desc: "".into(),
name: "Kit (Hangar Door)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-98995857i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitArcFurnace".into(),
prefab_hash: -98995857i32,
desc: "".into(),
name: "Kit (Arc Furnace)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1222286371i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAtmospherics".into(),
prefab_hash: 1222286371i32,
desc: "".into(),
name: "Kit (Atmospherics)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1668815415i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAutoMinerSmall".into(),
prefab_hash: 1668815415i32,
desc: "".into(),
name: "Kit (Autominer Small)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1753893214i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAutolathe".into(),
prefab_hash: -1753893214i32,
desc: "".into(),
name: "Kit (Autolathe)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1931958659i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitAutomatedOven".into(),
prefab_hash: -1931958659i32,
desc: "".into(),
name: "Kit (Automated Oven)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
148305004i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitBasket".into(),
prefab_hash: 148305004i32,
desc: "".into(),
name: "Kit (Basket)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1406656973i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitBattery".into(),
prefab_hash: 1406656973i32,
desc: "".into(),
name: "Kit (Battery)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-21225041i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitBatteryLarge".into(),
prefab_hash: -21225041i32,
desc: "".into(),
name: "Kit (Battery Large)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
249073136i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitBeacon".into(),
prefab_hash: 249073136i32,
desc: "".into(),
name: "Kit (Beacon)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1241256797i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitBeds".into(),
prefab_hash: -1241256797i32,
desc: "".into(),
name: "Kit (Beds)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1755116240i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitBlastDoor".into(),
prefab_hash: -1755116240i32,
desc: "".into(),
name: "Kit (Blast Door)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
578182956i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitCentrifuge".into(),
prefab_hash: 578182956i32,
desc: "".into(),
name: "Kit (Centrifuge)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1394008073i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitChairs".into(),
prefab_hash: -1394008073i32,
desc: "".into(),
name: "Kit (Chairs)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1025254665i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitChute".into(),
prefab_hash: 1025254665i32,
desc: "".into(),
name: "Kit (Basic Chutes)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-876560854i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitChuteUmbilical".into(),
prefab_hash: -876560854i32,
desc: "".into(),
name: "Kit (Chute Umbilical)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1470820996i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitCompositeCladding".into(),
prefab_hash: -1470820996i32,
desc: "".into(),
name: "Kit (Cladding)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1182412869i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitCompositeFloorGrating".into(),
prefab_hash: 1182412869i32,
desc: "".into(),
name: "Kit (Floor Grating)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1990225489i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitComputer".into(),
prefab_hash: 1990225489i32,
desc: "".into(),
name: "Kit (Computer)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1241851179i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitConsole".into(),
prefab_hash: -1241851179i32,
desc: "".into(),
name: "Kit (Consoles)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
429365598i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitCrate".into(),
prefab_hash: 429365598i32,
desc: "".into(),
name: "Kit (Crate)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1585956426i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitCrateMkII".into(),
prefab_hash: -1585956426i32,
desc: "".into(),
name: "Kit (Crate Mk II)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-551612946i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitCrateMount".into(),
prefab_hash: -551612946i32,
desc: "".into(),
name: "Kit (Container Mount)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-545234195i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitCryoTube".into(),
prefab_hash: -545234195i32,
desc: "".into(),
name: "Kit (Cryo Tube)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1935075707i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDeepMiner".into(),
prefab_hash: -1935075707i32,
desc: "".into(),
name: "Kit (Deep Miner)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
77421200i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDockingPort".into(),
prefab_hash: 77421200i32,
desc: "".into(),
name: "Kit (Docking Port)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
168615924i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDoor".into(),
prefab_hash: 168615924i32,
desc: "".into(),
name: "Kit (Door)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1743663875i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDrinkingFountain".into(),
prefab_hash: -1743663875i32,
desc: "".into(),
name: "Kit (Drinking Fountain)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1061945368i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDynamicCanister".into(),
prefab_hash: -1061945368i32,
desc: "".into(),
name: "Kit (Portable Gas Tank)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1533501495i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDynamicGasTankAdvanced".into(),
prefab_hash: 1533501495i32,
desc: "".into(),
name: "Kit (Portable Gas Tank Mk II)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-732720413i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDynamicGenerator".into(),
prefab_hash: -732720413i32,
desc: "".into(),
name: "Kit (Portable Generator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1861154222i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDynamicHydroponics".into(),
prefab_hash: -1861154222i32,
desc: "".into(),
name: "Kit (Portable Hydroponics)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
375541286i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDynamicLiquidCanister".into(),
prefab_hash: 375541286i32,
desc: "".into(),
name: "Kit (Portable Liquid Tank)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-638019974i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitDynamicMKIILiquidCanister".into(),
prefab_hash: -638019974i32,
desc: "".into(),
name: "Kit (Portable Liquid Tank Mk II)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1603046970i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitElectricUmbilical".into(),
prefab_hash: 1603046970i32,
desc: "".into(),
name: "Kit (Power Umbilical)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1181922382i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitElectronicsPrinter".into(),
prefab_hash: -1181922382i32,
desc: "".into(),
name: "Kit (Electronics Printer)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-945806652i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitElevator".into(),
prefab_hash: -945806652i32,
desc: "".into(),
name: "Kit (Elevator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
755302726i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitEngineLarge".into(),
prefab_hash: 755302726i32,
desc: "".into(),
name: "Kit (Engine Large)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1969312177i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitEngineMedium".into(),
prefab_hash: 1969312177i32,
desc: "".into(),
name: "Kit (Engine Medium)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
19645163i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitEngineSmall".into(),
prefab_hash: 19645163i32,
desc: "".into(),
name: "Kit (Engine Small)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1587787610i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitEvaporationChamber".into(),
prefab_hash: 1587787610i32,
desc: "".into(),
name: "Kit (Phase Change Device)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1701764190i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitFlagODA".into(),
prefab_hash: 1701764190i32,
desc: "".into(),
name: "Kit (ODA Flag)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1168199498i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitFridgeBig".into(),
prefab_hash: -1168199498i32,
desc: "".into(),
name: "Kit (Fridge Large)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1661226524i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitFridgeSmall".into(),
prefab_hash: 1661226524i32,
desc: "".into(),
name: "Kit (Fridge Small)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-806743925i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitFurnace".into(),
prefab_hash: -806743925i32,
desc: "".into(),
name: "Kit (Furnace)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1162905029i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitFurniture".into(),
prefab_hash: 1162905029i32,
desc: "".into(),
name: "Kit (Furniture)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-366262681i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitFuselage".into(),
prefab_hash: -366262681i32,
desc: "".into(),
name: "Kit (Fuselage)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
377745425i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitGasGenerator".into(),
prefab_hash: 377745425i32,
desc: "".into(),
name: "Kit (Gas Fuel Generator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1867280568i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitGasUmbilical".into(),
prefab_hash: -1867280568i32,
desc: "".into(),
name: "Kit (Gas Umbilical)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
206848766i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitGovernedGasRocketEngine".into(),
prefab_hash: 206848766i32,
desc: "".into(),
name: "Kit (Pumped Gas Rocket Engine)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2140672772i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitGroundTelescope".into(),
prefab_hash: -2140672772i32,
desc: "".into(),
name: "Kit (Telescope)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
341030083i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitGrowLight".into(),
prefab_hash: 341030083i32,
desc: "".into(),
name: "Kit (Grow Light)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1022693454i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitHarvie".into(),
prefab_hash: -1022693454i32,
desc: "".into(),
name: "Kit (Harvie)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1710540039i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitHeatExchanger".into(),
prefab_hash: -1710540039i32,
desc: "".into(),
name: "Kit Heat Exchanger".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
844391171i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitHorizontalAutoMiner".into(),
prefab_hash: 844391171i32,
desc: "".into(),
name: "Kit (OGRE)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2098556089i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitHydraulicPipeBender".into(),
prefab_hash: -2098556089i32,
desc: "".into(),
name: "Kit (Hydraulic Pipe Bender)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-927931558i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitHydroponicAutomated".into(),
prefab_hash: -927931558i32,
desc: "".into(),
name: "Kit (Automated Hydroponics)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2057179799i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitHydroponicStation".into(),
prefab_hash: 2057179799i32,
desc: "".into(),
name: "Kit (Hydroponic Station)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
288111533i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitIceCrusher".into(),
prefab_hash: 288111533i32,
desc: "".into(),
name: "Kit (Ice Crusher)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2067655311i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitInsulatedLiquidPipe".into(),
prefab_hash: 2067655311i32,
desc: "".into(),
name: "Kit (Insulated Liquid Pipe)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 20u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
452636699i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitInsulatedPipe".into(),
prefab_hash: 452636699i32,
desc: "".into(),
name: "Kit (Insulated Pipe)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 20u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-27284803i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitInsulatedPipeUtility".into(),
prefab_hash: -27284803i32,
desc: "".into(),
name: "Kit (Insulated Pipe Utility Gas)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1831558953i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitInsulatedPipeUtilityLiquid".into(),
prefab_hash: -1831558953i32,
desc: "".into(),
name: "Kit (Insulated Pipe Utility Liquid)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1935945891i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitInteriorDoors".into(),
prefab_hash: 1935945891i32,
desc: "".into(),
name: "Kit (Interior Doors)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
489494578i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLadder".into(),
prefab_hash: 489494578i32,
desc: "".into(),
name: "Kit (Ladder)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1817007843i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLandingPadAtmos".into(),
prefab_hash: 1817007843i32,
desc: "".into(),
name: "Kit (Landing Pad Atmospherics)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
293581318i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLandingPadBasic".into(),
prefab_hash: 293581318i32,
desc: "".into(),
name: "Kit (Landing Pad Basic)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1267511065i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLandingPadWaypoint".into(),
prefab_hash: -1267511065i32,
desc: "".into(),
name: "Kit (Landing Pad Runway)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
450164077i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLargeDirectHeatExchanger".into(),
prefab_hash: 450164077i32,
desc: "".into(),
name: "Kit (Large Direct Heat Exchanger)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
847430620i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLargeExtendableRadiator".into(),
prefab_hash: 847430620i32,
desc: "".into(),
name: "Kit (Large Extendable Radiator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2039971217i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLargeSatelliteDish".into(),
prefab_hash: -2039971217i32,
desc: "".into(),
name: "Kit (Large Satellite Dish)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1854167549i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLaunchMount".into(),
prefab_hash: -1854167549i32,
desc: "".into(),
name: "Kit (Launch Mount)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-174523552i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLaunchTower".into(),
prefab_hash: -174523552i32,
desc: "".into(),
name: "Kit (Rocket Launch Tower)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1951126161i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLiquidRegulator".into(),
prefab_hash: 1951126161i32,
desc: "".into(),
name: "Kit (Liquid Regulator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-799849305i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLiquidTank".into(),
prefab_hash: -799849305i32,
desc: "".into(),
name: "Kit (Liquid Tank)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
617773453i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLiquidTankInsulated".into(),
prefab_hash: 617773453i32,
desc: "".into(),
name: "Kit (Insulated Liquid Tank)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1805020897i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLiquidTurboVolumePump".into(),
prefab_hash: -1805020897i32,
desc: "".into(),
name: "Kit (Turbo Volume Pump - Liquid)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1571996765i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLiquidUmbilical".into(),
prefab_hash: 1571996765i32,
desc: "".into(),
name: "Kit (Liquid Umbilical)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
882301399i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLocker".into(),
prefab_hash: 882301399i32,
desc: "".into(),
name: "Kit (Locker)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1512322581i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLogicCircuit".into(),
prefab_hash: 1512322581i32,
desc: "".into(),
name: "Kit (IC Housing)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1997293610i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLogicInputOutput".into(),
prefab_hash: 1997293610i32,
desc: "".into(),
name: "Kit (Logic I/O)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2098214189i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLogicMemory".into(),
prefab_hash: -2098214189i32,
desc: "".into(),
name: "Kit (Logic Memory)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
220644373i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLogicProcessor".into(),
prefab_hash: 220644373i32,
desc: "".into(),
name: "Kit (Logic Processor)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
124499454i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLogicSwitch".into(),
prefab_hash: 124499454i32,
desc: "".into(),
name: "Kit (Logic Switch)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1005397063i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitLogicTransmitter".into(),
prefab_hash: 1005397063i32,
desc: "".into(),
name: "Kit (Logic Transmitter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-344968335i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitMotherShipCore".into(),
prefab_hash: -344968335i32,
desc: "".into(),
name: "Kit (Mothership)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2038889137i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitMusicMachines".into(),
prefab_hash: -2038889137i32,
desc: "".into(),
name: "Kit (Music Machines)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1752768283i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPassiveLargeRadiatorGas".into(),
prefab_hash: -1752768283i32,
desc: "".into(),
name: "Kit (Medium Radiator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1453961898i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPassiveLargeRadiatorLiquid".into(),
prefab_hash: 1453961898i32,
desc: "".into(),
name: "Kit (Medium Radiator Liquid)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
636112787i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPassthroughHeatExchanger".into(),
prefab_hash: 636112787i32,
desc: "".into(),
name: "Kit (CounterFlow Heat Exchanger)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2062364768i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPictureFrame".into(),
prefab_hash: -2062364768i32,
desc: "".into(),
name: "Kit Picture Frame".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1619793705i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPipe".into(),
prefab_hash: -1619793705i32,
desc: "".into(),
name: "Kit (Pipe)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 20u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1166461357i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPipeLiquid".into(),
prefab_hash: -1166461357i32,
desc: "".into(),
name: "Kit (Liquid Pipe)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 20u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-827125300i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPipeOrgan".into(),
prefab_hash: -827125300i32,
desc: "".into(),
name: "Kit (Pipe Organ)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
920411066i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPipeRadiator".into(),
prefab_hash: 920411066i32,
desc: "".into(),
name: "Kit (Pipe Radiator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1697302609i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPipeRadiatorLiquid".into(),
prefab_hash: -1697302609i32,
desc: "".into(),
name: "Kit (Pipe Radiator Liquid)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1934508338i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPipeUtility".into(),
prefab_hash: 1934508338i32,
desc: "".into(),
name: "Kit (Pipe Utility Gas)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
595478589i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPipeUtilityLiquid".into(),
prefab_hash: 595478589i32,
desc: "".into(),
name: "Kit (Pipe Utility Liquid)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
119096484i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPlanter".into(),
prefab_hash: 119096484i32,
desc: "".into(),
name: "Kit (Planter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1041148999i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPortablesConnector".into(),
prefab_hash: 1041148999i32,
desc: "".into(),
name: "Kit (Portables Connector)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
291368213i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPowerTransmitter".into(),
prefab_hash: 291368213i32,
desc: "".into(),
name: "Kit (Power Transmitter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-831211676i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPowerTransmitterOmni".into(),
prefab_hash: -831211676i32,
desc: "".into(),
name: "Kit (Power Transmitter Omni)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2015439334i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPoweredVent".into(),
prefab_hash: 2015439334i32,
desc: "".into(),
name: "Kit (Powered Vent)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-121514007i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPressureFedGasEngine".into(),
prefab_hash: -121514007i32,
desc: "".into(),
name: "Kit (Pressure Fed Gas Engine)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-99091572i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPressureFedLiquidEngine".into(),
prefab_hash: -99091572i32,
desc: "".into(),
name: "Kit (Pressure Fed Liquid Engine)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
123504691i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPressurePlate".into(),
prefab_hash: 123504691i32,
desc: "".into(),
name: "Kit (Trigger Plate)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1921918951i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitPumpedLiquidEngine".into(),
prefab_hash: 1921918951i32,
desc: "".into(),
name: "Kit (Pumped Liquid Engine)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
750176282i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRailing".into(),
prefab_hash: 750176282i32,
desc: "".into(),
name: "Kit (Railing)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
849148192i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRecycler".into(),
prefab_hash: 849148192i32,
desc: "".into(),
name: "Kit (Recycler)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1181371795i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRegulator".into(),
prefab_hash: 1181371795i32,
desc: "".into(),
name: "Kit (Pressure Regulator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1459985302i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitReinforcedWindows".into(),
prefab_hash: 1459985302i32,
desc: "".into(),
name: "Kit (Reinforced Windows)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
724776762i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitResearchMachine".into(),
prefab_hash: 724776762i32,
desc: "".into(),
name: "Kit Research Machine".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1574688481i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRespawnPointWallMounted".into(),
prefab_hash: 1574688481i32,
desc: "".into(),
name: "Kit (Respawn)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1396305045i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketAvionics".into(),
prefab_hash: 1396305045i32,
desc: "".into(),
name: "Kit (Avionics)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-314072139i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketBattery".into(),
prefab_hash: -314072139i32,
desc: "".into(),
name: "Kit (Rocket Battery)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
479850239i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketCargoStorage".into(),
prefab_hash: 479850239i32,
desc: "".into(),
name: "Kit (Rocket Cargo Storage)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-303008602i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketCelestialTracker".into(),
prefab_hash: -303008602i32,
desc: "".into(),
name: "Kit (Rocket Celestial Tracker)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
721251202i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketCircuitHousing".into(),
prefab_hash: 721251202i32,
desc: "".into(),
name: "Kit (Rocket Circuit Housing)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1256996603i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketDatalink".into(),
prefab_hash: -1256996603i32,
desc: "".into(),
name: "Kit (Rocket Datalink)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1629347579i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketGasFuelTank".into(),
prefab_hash: -1629347579i32,
desc: "".into(),
name: "Kit (Rocket Gas Fuel Tank)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2032027950i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketLiquidFuelTank".into(),
prefab_hash: 2032027950i32,
desc: "".into(),
name: "Kit (Rocket Liquid Fuel Tank)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-636127860i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketManufactory".into(),
prefab_hash: -636127860i32,
desc: "".into(),
name: "Kit (Rocket Manufactory)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-867969909i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketMiner".into(),
prefab_hash: -867969909i32,
desc: "".into(),
name: "Kit (Rocket Miner)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1753647154i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketScanner".into(),
prefab_hash: 1753647154i32,
desc: "".into(),
name: "Kit (Rocket Scanner)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-932335800i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRocketTransformerSmall".into(),
prefab_hash: -932335800i32,
desc: "".into(),
name: "Kit (Transformer Small (Rocket))".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1827215803i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRoverFrame".into(),
prefab_hash: 1827215803i32,
desc: "".into(),
name: "Kit (Rover Frame)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
197243872i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitRoverMKI".into(),
prefab_hash: 197243872i32,
desc: "".into(),
name: "Kit (Rover Mk I)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
323957548i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSDBHopper".into(),
prefab_hash: 323957548i32,
desc: "".into(),
name: "Kit (SDB Hopper)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
178422810i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSatelliteDish".into(),
prefab_hash: 178422810i32,
desc: "".into(),
name: "Kit (Medium Satellite Dish)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
578078533i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSecurityPrinter".into(),
prefab_hash: 578078533i32,
desc: "".into(),
name: "Kit (Security Printer)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1776897113i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSensor".into(),
prefab_hash: -1776897113i32,
desc: "".into(),
name: "Kit (Sensors)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
735858725i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitShower".into(),
prefab_hash: 735858725i32,
desc: "".into(),
name: "Kit (Shower)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
529996327i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSign".into(),
prefab_hash: 529996327i32,
desc: "".into(),
name: "Kit (Sign)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
326752036i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSleeper".into(),
prefab_hash: 326752036i32,
desc: "".into(),
name: "Kit (Sleeper)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1332682164i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSmallDirectHeatExchanger".into(),
prefab_hash: -1332682164i32,
desc: "".into(),
name: "Kit (Small Direct Heat Exchanger)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1960952220i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSmallSatelliteDish".into(),
prefab_hash: 1960952220i32,
desc: "".into(),
name: "Kit (Small Satellite Dish)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1924492105i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSolarPanel".into(),
prefab_hash: -1924492105i32,
desc: "".into(),
name: "Kit (Solar Panel)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
844961456i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSolarPanelBasic".into(),
prefab_hash: 844961456i32,
desc: "".into(),
name: "Kit (Solar Panel Basic)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-528695432i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSolarPanelBasicReinforced".into(),
prefab_hash: -528695432i32,
desc: "".into(),
name: "Kit (Solar Panel Basic Heavy)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-364868685i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSolarPanelReinforced".into(),
prefab_hash: -364868685i32,
desc: "".into(),
name: "Kit (Solar Panel Heavy)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1293995736i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSolidGenerator".into(),
prefab_hash: 1293995736i32,
desc: "".into(),
name: "Kit (Solid Generator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
969522478i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSorter".into(),
prefab_hash: 969522478i32,
desc: "".into(),
name: "Kit (Sorter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-126038526i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSpeaker".into(),
prefab_hash: -126038526i32,
desc: "".into(),
name: "Kit (Speaker)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1013244511i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitStacker".into(),
prefab_hash: 1013244511i32,
desc: "".into(),
name: "Kit (Stacker)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
170878959i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitStairs".into(),
prefab_hash: 170878959i32,
desc: "".into(),
name: "Kit (Stairs)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1868555784i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitStairwell".into(),
prefab_hash: -1868555784i32,
desc: "".into(),
name: "Kit (Stairwell)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2133035682i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitStandardChute".into(),
prefab_hash: 2133035682i32,
desc: "".into(),
name: "Kit (Powered Chutes)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1821571150i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitStirlingEngine".into(),
prefab_hash: -1821571150i32,
desc: "".into(),
name: "Kit (Stirling Engine)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1088892825i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitSuitStorage".into(),
prefab_hash: 1088892825i32,
desc: "".into(),
name: "Kit (Suit Storage)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1361598922i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitTables".into(),
prefab_hash: -1361598922i32,
desc: "".into(),
name: "Kit (Tables)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
771439840i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitTank".into(),
prefab_hash: 771439840i32,
desc: "".into(),
name: "Kit (Tank)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1021053608i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitTankInsulated".into(),
prefab_hash: 1021053608i32,
desc: "".into(),
name: "Kit (Tank Insulated)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
529137748i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitToolManufactory".into(),
prefab_hash: 529137748i32,
desc: "".into(),
name: "Kit (Tool Manufactory)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-453039435i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitTransformer".into(),
prefab_hash: -453039435i32,
desc: "".into(),
name: "Kit (Transformer Large)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
665194284i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitTransformerSmall".into(),
prefab_hash: 665194284i32,
desc: "".into(),
name: "Kit (Transformer Small)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1590715731i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitTurbineGenerator".into(),
prefab_hash: -1590715731i32,
desc: "".into(),
name: "Kit (Turbine Generator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1248429712i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitTurboVolumePump".into(),
prefab_hash: -1248429712i32,
desc: "".into(),
name: "Kit (Turbo Volume Pump - Gas)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1798044015i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitUprightWindTurbine".into(),
prefab_hash: -1798044015i32,
desc: "".into(),
name: "Kit (Upright Wind Turbine)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2038384332i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitVendingMachine".into(),
prefab_hash: -2038384332i32,
desc: "".into(),
name: "Kit (Vending Machine)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1867508561i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitVendingMachineRefrigerated".into(),
prefab_hash: -1867508561i32,
desc: "".into(),
name: "Kit (Vending Machine Refrigerated)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1826855889i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWall".into(),
prefab_hash: -1826855889i32,
desc: "".into(),
name: "Kit (Wall)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 30u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1625214531i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWallArch".into(),
prefab_hash: 1625214531i32,
desc: "".into(),
name: "Kit (Arched Wall)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 30u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-846838195i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWallFlat".into(),
prefab_hash: -846838195i32,
desc: "".into(),
name: "Kit (Flat Wall)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 30u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-784733231i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWallGeometry".into(),
prefab_hash: -784733231i32,
desc: "".into(),
name: "Kit (Geometric Wall)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 30u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-524546923i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWallIron".into(),
prefab_hash: -524546923i32,
desc: "".into(),
name: "Kit (Iron Wall)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 30u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-821868990i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWallPadded".into(),
prefab_hash: -821868990i32,
desc: "".into(),
name: "Kit (Padded Wall)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 30u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
159886536i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWaterBottleFiller".into(),
prefab_hash: 159886536i32,
desc: "".into(),
name: "Kit (Water Bottle Filler)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
611181283i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWaterPurifier".into(),
prefab_hash: 611181283i32,
desc: "".into(),
name: "Kit (Water Purifier)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
337505889i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWeatherStation".into(),
prefab_hash: 337505889i32,
desc: "".into(),
name: "Kit (Weather Station)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-868916503i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWindTurbine".into(),
prefab_hash: -868916503i32,
desc: "".into(),
name: "Kit (Wind Turbine)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1779979754i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemKitWindowShutter".into(),
prefab_hash: 1779979754i32,
desc: "".into(),
name: "Kit (Window Shutter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-743968726i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemLabeller".into(),
prefab_hash: -743968726i32,
desc: "A labeller lets you set names and values on a variety of devices and structures, including <link=ThingStructureConsole><color=green>Console</color></link> and <link=LogicPage><color=#0080FFFF>Logic</color></link>."
.into(),
name: "Labeller".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
141535121i32,
ItemCircuitHolderTemplate {
templateType: "ItemCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "ItemLaptop".into(),
prefab_hash: 141535121i32,
desc: "The Laptop functions as a portable IC editor. To operate the Laptop it must be powered with a battery, have a <link=ThingMotherboardProgrammableChip><color=green>IC Editor Motherboard</color></link> in the motherboard slot, and an <link=ThingItemIntegratedCircuit10><color=green>Integrated Circuit (IC10)</color></link> in the Programmable Chip Slot.\n\nYou must place the laptop down to interact with the onsreen UI.\n \nConnects to <pos=300><link=ThingStructureLogicTransmitter><color=green>Logic Transmitter</color></link>"
.into(),
name: "Laptop".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::PressureExternal,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::TemperatureExternal, MemoryAccess::Read),
(LogicType::PositionX, MemoryAccess::Read), (LogicType::PositionY,
MemoryAccess::Read), (LogicType::PositionZ, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: true,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Programmable Chip".into(), typ :
Class::ProgrammableChip }, SlotInfo { name : "Battery".into(), typ :
Class::Battery }, SlotInfo { name : "Motherboard".into(), typ :
Class::Motherboard }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
2134647745i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLeadIngot".into(),
prefab_hash: 2134647745i32,
desc: "".into(),
name: "Ingot (Lead)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Lead".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-190236170i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLeadOre".into(),
prefab_hash: -190236170i32,
desc: "Lead is a chemical element with the symbol \"Pb\". It is a dense, heavy metal with a low melting point. Lead is a used to make a variety of things such as <link=IngotPage><color=#0080FFFF>alloys</color></link> like <link=ThingItemSolderIngot><color=green>Ingot (Solder)</color></link> and munitions."
.into(),
name: "Ore (Lead)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Lead".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1949076595i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLightSword".into(),
prefab_hash: 1949076595i32,
desc: "A charming, if useless, pseudo-weapon. (Creative only.)".into(),
name: "Light Sword".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-185207387i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLiquidCanisterEmpty".into(),
prefab_hash: -185207387i32,
desc: "".into(),
name: "Liquid Canister".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::LiquidCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.05f32,
}),
internal_atmo_info: Some(InternalAtmoInfo {
volume: 12.1f32,
}),
}
.into(),
);
map.insert(
777684475i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLiquidCanisterSmart".into(),
prefab_hash: 777684475i32,
desc: "0.Mode0\n1.Mode1".into(),
name: "Liquid Canister (Smart)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::LiquidCanister,
sorting_class: SortingClass::Atmospherics,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: Some(InternalAtmoInfo {
volume: 18.1f32,
}),
}
.into(),
);
map.insert(
2036225202i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLiquidDrain".into(),
prefab_hash: 2036225202i32,
desc: "".into(),
name: "Kit (Liquid Drain)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
226055671i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLiquidPipeAnalyzer".into(),
prefab_hash: 226055671i32,
desc: "".into(),
name: "Kit (Liquid Pipe Analyzer)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-248475032i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLiquidPipeHeater".into(),
prefab_hash: -248475032i32,
desc: "Creates a <link=ThingStructureLiquidPipeHeater><color=green>Pipe Heater (Liquid)</color></link>."
.into(),
name: "Pipe Heater Kit (Liquid)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2126113312i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLiquidPipeValve".into(),
prefab_hash: -2126113312i32,
desc: "This kit creates a <link=ThingStructureLiquidValve><color=green>Liquid Valve</color></link>."
.into(),
name: "Kit (Liquid Pipe Valve)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2106280569i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLiquidPipeVolumePump".into(),
prefab_hash: -2106280569i32,
desc: "".into(),
name: "Kit (Liquid Volume Pump)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2037427578i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemLiquidTankStorage".into(),
prefab_hash: 2037427578i32,
desc: "This kit produces a <link=ThingItemLiquidTankStorage><color=green>Kit (Liquid Canister Storage)</color></link> for refilling a <link=ThingItemLiquidCanisterEmpty><color=green>Liquid Canister</color></link>."
.into(),
name: "Kit (Liquid Canister Storage)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
240174650i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemMKIIAngleGrinder".into(),
prefab_hash: 240174650i32,
desc: "Angles-be-gone with the trusty angle grinder. The MK II is more resistant to temperature and pressure."
.into(),
name: "Mk II Angle Grinder".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-2061979347i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemMKIIArcWelder".into(),
prefab_hash: -2061979347i32,
desc: "".into(),
name: "Mk II Arc Welder".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1440775434i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemMKIICrowbar".into(),
prefab_hash: 1440775434i32,
desc: "<link=Recurso><color=#0080FFFF>Recurso\'s</color></link> entry-level crowbar is useful in a variety of everyday <link=Stationeers><color=#0080FFFF>Stationeer</color></link> settings, from opening <link=ThingStructureAreaPowerControl><color=green>Area Power Control</color></link>s and unpowered <link=ThingStructureAirlock><color=green>Airlock</color></link>s, to splatting pan-dimensional headcrabs, should the need arise. The MK II is more resistant to temperature and pressure."
.into(),
name: "Mk II Crowbar".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
324791548i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemMKIIDrill".into(),
prefab_hash: 324791548i32,
desc: "The <link=ExMin><color=#0080FFFF>ExMin</color></link> Off-whirled Hand Drill has been a companion to <link=Stationeers><color=#0080FFFF>Stationeers</color></link> for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature."
.into(),
name: "Mk II Drill".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
388774906i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemMKIIDuctTape".into(),
prefab_hash: 388774906i32,
desc: "In the distant past, one of Earth\'s great champions taught a generation of \'Fix-It People\' that duct tape was the answer to any problem. <link=Stationeers><color=#0080FFFF>Stationeers</color></link> have demonstrated that this is truth holds strong, so long as the problem is a damaged <link=ThingItemEvaSuit><color=green>Eva Suit</color></link>, <link=ThingItemJetpackBasic><color=green>Jetpack Basic</color></link>, <link=ThingItemSpaceHelmet><color=green>Space Helmet</color></link>, or even a <link=ThingStructureSolarPanel><color=green>Solar Panel</color></link>.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage."
.into(),
name: "Mk II Duct Tape".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1875271296i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemMKIIMiningDrill".into(),
prefab_hash: -1875271296i32,
desc: "The handheld \'Topo\' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic <link=Recurso><color=#0080FFFF>Recurso</color></link> zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, \'The Topo don\'t stopo.\' The MK II is more resistant to temperature and pressure."
.into(),
name: "Mk II Mining Drill".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Default".into()), (1u32, "Flatten".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-2015613246i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemMKIIScrewdriver".into(),
prefab_hash: -2015613246i32,
desc: "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It\'s definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on <link=LogicUnitPage><color=#0080FFFF>logic</color></link> units. The MK II is more resistant to temperature and pressure."
.into(),
name: "Mk II Screwdriver".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-178893251i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemMKIIWireCutters".into(),
prefab_hash: -178893251i32,
desc: "Wirecutters allow you to deconstruct various <link=StructurePage><color=#0080FFFF>structures</color></link>, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the <link=ThingItemToolBelt><color=green>Tool Belt</color></link>, along with other essential <link=ToolPage><color=#0080FFFF>tools</color></link>."
.into(),
name: "Mk II Wire Cutters".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1862001680i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemMKIIWrench".into(),
prefab_hash: 1862001680i32,
desc: "One of humanity\'s enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of <link=StructurePage><color=#0080FFFF>structures</color></link> The MK II is more resistant to temperature and pressure."
.into(),
name: "Mk II Wrench".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1399098998i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemMarineBodyArmor".into(),
prefab_hash: 1399098998i32,
desc: "".into(),
name: "Marine Armor".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Suit,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1073631646i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemMarineHelmet".into(),
prefab_hash: 1073631646i32,
desc: "".into(),
name: "Marine Helmet".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Helmet,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1327248310i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemMilk".into(),
prefab_hash: 1327248310i32,
desc: "Full disclosure, it\'s not actually \'milk\', but an <link=Agrizero><color=#0080FFFF>Agrizero-invented</color></link> synthesis of 5ml <link=ThingItemSoyOil><color=green>Soy Oil</color></link> and 5g <link=ThingItemFern><color=green>Fern</color></link>, delicately blended in the <link=ThingApplianceChemistryStation><color=green>Chemistry Station</color></link>. Surprisingly filling, it can be used as an ingredient to cook other <link=FoodPage><color=#0080FFFF>food</color></link> in the <link=ThingApplianceMicrowave><color=green>Microwave</color></link> or <link=ThingStructureAutomatedOven><color=green>Automated Oven</color></link>. Think, <link=ThingItemMuffin><color=green>Muffin</color></link>."
.into(),
name: "Milk".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("Milk".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1650383245i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemMiningBackPack".into(),
prefab_hash: -1650383245i32,
desc: "".into(),
name: "Mining Backpack".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Back,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-676435305i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemMiningBelt".into(),
prefab_hash: -676435305i32,
desc: "Originally developed by <link=Recurso><color=#0080FFFF>Recurso Espaciais</color></link> for asteroid mining, the <link=Stationeers><color=#0080FFFF>Stationeer\'s</color></link> mining belt has room for two <link=ToolPage><color=#0080FFFF>tools</color></link> and eight <link=OrePage><color=#0080FFFF>ore</color></link> stacks. While wearing the belt, <link=OrePage><color=#0080FFFF>ore</color></link> is automatically stored there when mined. Volatile and temperature-dependent remain stable in the environmentally controlled unit."
.into(),
name: "Mining Belt".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Belt,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1470787934i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemMiningBeltMKII".into(),
prefab_hash: 1470787934i32,
desc: "A larger and more capacious mining belt, the Mk II is similar to the <link=ThingItemMiningBelt><color=green>Mining Belt</color></link>, but has 13 slots instead of the basic 8, to increase the length of your mining trips. It also has space for two tools. "
.into(),
name: "Mining Belt MK II".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Belt,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (3u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (4u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (5u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (6u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (7u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (8u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (9u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (10u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (11u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (12u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (13u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (14u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
15829510i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemMiningCharge".into(),
prefab_hash: 15829510i32,
desc: "A low cost, high yield explosive with a 10 second timer.".into(),
name: "Mining Charge".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1055173191i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemMiningDrill".into(),
prefab_hash: 1055173191i32,
desc: "The handheld \'Topo\' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic <link=Recurso><color=#0080FFFF>Recurso</color></link> zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, \'The Topo don\'t stopo.\'"
.into(),
name: "Mining Drill".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Default".into()), (1u32, "Flatten".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1663349918i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemMiningDrillHeavy".into(),
prefab_hash: -1663349918i32,
desc: "Sometimes mining trips require something a little bigger to bring home the goods. This scaled up version of the <link=Recurso><color=#0080FFFF>Recurso</color></link> \'Topo\' design <link=ThingItemMiningDrill><color=green>Mining Drill</color></link> can literally move mountains. The heavy mining drill will remove more ground and mine <link=OrePage><color=#0080FFFF>ore</color></link> more quickly than the standard mining drill. The heavy mining drill is also resilient to temperature and pressure. So no matter what planet or extreme weather conditions may be present, the Recurso heavy mining drill will get the job done."
.into(),
name: "Mining Drill (Heavy)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Default".into()), (1u32, "Flatten".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1258187304i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemMiningDrillPneumatic".into(),
prefab_hash: 1258187304i32,
desc: "0.Default\n1.Flatten".into(),
name: "Pneumatic Mining Drill".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1467558064i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemMkIIToolbelt".into(),
prefab_hash: 1467558064i32,
desc: "A large, ten-slot tool belt with two extra generic slots for carrying whatever takes your fancy."
.into(),
name: "Tool Belt MK II".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Belt,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (3u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (4u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (5u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (6u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (7u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (8u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (9u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (10u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (11u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ
: Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool },
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ
: Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool },
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1864982322i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemMuffin".into(),
prefab_hash: -1864982322i32,
desc: "A delicious, semi-healthful snack, nothing comforts a <link=Stationeers><color=#0080FFFF>Stationeer</color></link> 800 million kilometers from home like a hand-made muffin."
.into(),
name: "Muffin".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2044798572i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemMushroom".into(),
prefab_hash: 2044798572i32,
desc: "A tasty food item. Unlike normal plants, it consumes <link=GasOxygen><color=#44AD83>Oxygen</color></link> and outputs <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link>. Mushrooms will only mature at a moderate rate in darkness, and prolonged light will kill it."
.into(),
name: "Mushroom".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 20u32,
reagents: Some(vec![("Mushroom".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
982514123i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemNVG".into(),
prefab_hash: 982514123i32,
desc: "".into(),
name: "Night Vision Goggles".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Glasses,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1406385572i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemNickelIngot".into(),
prefab_hash: -1406385572i32,
desc: "".into(),
name: "Ingot (Nickel)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Nickel".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1830218956i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemNickelOre".into(),
prefab_hash: 1830218956i32,
desc: "Nickel is a chemical element with the symbol \"Ni\" and is a rare metal commonly used as a plating to prevent corrosion. Sought after by many <link=Stationeers><color=#0080FFFF>Stationeers</color></link>, Nickel is also commonly used to create several <link=IngotPage><color=#0080FFFF>alloys</color></link>."
.into(),
name: "Ore (Nickel)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Nickel".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1499471529i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemNitrice".into(),
prefab_hash: -1499471529i32,
desc: "Nitrice is the nickname given to solid <link=GasNitrogen><color=#44AD83>Nitrogen</color></link> Ice, and found on many planets and moons in the Solar System. Given the inert nature of the <link=GasNitrogen><color=#44AD83>Nitrogen</color></link> it produces, the ice is useful when making breathable atmospheres with low flammability.\n\nHighly sensitive to temperature, nitrice will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the <link=ThingItemMiningBelt><color=green>Mining Belt</color></link>, <link=ThingItemMiningBeltAdvanced><color=green>Mining Belt MK II</color></link> or devices like the <link=ThingStructureIceCrusher><color=green>Ice Crusher</color></link> or <link=ThingStructureFridgeSmall><color=green>Fridge Small</color></link>."
.into(),
name: "Ice (Nitrice)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1805394113i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemOxite".into(),
prefab_hash: -1805394113i32,
desc: "Oxite ice is largely composed of frozen <link=GasOxygen><color=#44AD83>Oxygen</color></link>, and found on many planets in the Solar System. Highly valuable and sought after, not all planets a <link=Stationeers><color=#0080FFFF>Stationeer</color></link> visits will have some. \n\nHighly sensitive to temperature, oxite will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the <link=ThingItemMiningBelt><color=green>Mining Belt</color></link>, <link=ThingItemMiningBeltAdvanced><color=green>Mining Belt MK II</color></link> or devices like the <link=ThingStructureIceCrusher><color=green>Ice Crusher</color></link> or <link=ThingStructureFridgeSmall><color=green>Fridge Small</color></link>. When melting, oxite produces a mixture of <link=GasOxygen><color=#44AD83>Oxygen</color></link> and <link=GasNitrogen><color=#44AD83>Nitrogen</color></link>."
.into(),
name: "Ice (Oxite)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
238631271i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPassiveVent".into(),
prefab_hash: 238631271i32,
desc: "This kit creates a <link=ThingItemPassiveVent><color=green>Passive Vent</color></link> among other variants."
.into(),
name: "Passive Vent".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1397583760i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPassiveVentInsulated".into(),
prefab_hash: -1397583760i32,
desc: "".into(),
name: "Kit (Insulated Passive Vent)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2042955224i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPeaceLily".into(),
prefab_hash: 2042955224i32,
desc: "A fetching lily with greater resistance to cold temperatures."
.into(),
name: "Peace Lily".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-913649823i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPickaxe".into(),
prefab_hash: -913649823i32,
desc: "When the sun sets and the <link=ThingItemMiningDrill><color=green>Mining Drill</color></link> runs dead, its batteries drained and your <link=ThingStructureSolarPanel><color=green>Solar Panel</color></link> cold and lifeless, the <link=ThingStructureAutolathe><color=green>Autolathe</color></link> empty, the way forward unclear, one thing holds back the endless night of defeat: the trusty pickaxe."
.into(),
name: "Pickaxe".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1118069417i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPillHeal".into(),
prefab_hash: 1118069417i32,
desc: "Three centuries of pharmaceutical technology compressed into one small, easy to ingest pill: the Heal Pill, aka the Proton Pill, aka Mr Happy contains active enzymes, therapeutic proteins, modified microbial strains, and mammalian cell line analogues in a single-dose boost of high purity, efficacy, and potency that potentiates a swift parasympathetic immune response."
.into(),
name: "Pill (Medical)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
418958601i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPillStun".into(),
prefab_hash: 418958601i32,
desc: "Through rarely publicized, the existence of this pill is an open secret. For use when all else has failed, the Sayonara Suppository immobilizes and rapidly ends the average <link=Stationeers><color=#0080FFFF>Stationeer</color></link>. The delivery mode ensures that if a Stationeer chooses to take this pill, they really have to want it."
.into(),
name: "Pill (Paralysis)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-767597887i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeAnalyizer".into(),
prefab_hash: -767597887i32,
desc: "This kit creates a <link=ThingStructurePipeAnalysizer><color=green>Pipe Analyzer</color></link>."
.into(),
name: "Kit (Pipe Analyzer)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-38898376i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeCowl".into(),
prefab_hash: -38898376i32,
desc: "This creates a <link=ThingItemPipeCowl><color=green>Pipe Cowl</color></link> that can be placed on the end of pipes to expose them to the world atmospheres."
.into(),
name: "Pipe Cowl".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 20u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1532448832i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeDigitalValve".into(),
prefab_hash: -1532448832i32,
desc: "This kit creates a <link=ThingStructureDigitalValve><color=green>Digital Valve</color></link>."
.into(),
name: "Kit (Digital Valve)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1134459463i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeGasMixer".into(),
prefab_hash: -1134459463i32,
desc: "This kit creates a <link=ThingStructureGasMixer><color=green>Gas Mixer</color></link>."
.into(),
name: "Kit (Gas Mixer)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1751627006i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeHeater".into(),
prefab_hash: -1751627006i32,
desc: "Creates a <link=ThingStructurePipeHeater><color=green>Pipe Heater (Gas)</color></link>."
.into(),
name: "Pipe Heater Kit (Gas)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1366030599i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeIgniter".into(),
prefab_hash: 1366030599i32,
desc: "".into(),
name: "Kit (Pipe Igniter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
391769637i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeLabel".into(),
prefab_hash: 391769637i32,
desc: "This kit creates a <link=ThingStructurePipeLabel><color=green>Pipe Label</color></link>."
.into(),
name: "Kit (Pipe Label)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 20u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-906521320i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeLiquidRadiator".into(),
prefab_hash: -906521320i32,
desc: "This kit creates a <link=ThingStructureLiquidPipeRadiator><color=green>Liquid Pipe Convection Radiator</color></link>."
.into(),
name: "Kit (Liquid Radiator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1207939683i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeMeter".into(),
prefab_hash: 1207939683i32,
desc: "This kit creates a <link=ThingStructurePipeMeter><color=green>Pipe Meter</color></link>."
.into(),
name: "Kit (Pipe Meter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1796655088i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeRadiator".into(),
prefab_hash: -1796655088i32,
desc: "This kit creates a <link=ThingStructurePipeRadiator><color=green>Pipe Convection Radiator</color></link>."
.into(),
name: "Kit (Radiator)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
799323450i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeValve".into(),
prefab_hash: 799323450i32,
desc: "This kit creates a <link=ThingStructureValve><color=green>Valve</color></link>."
.into(),
name: "Kit (Pipe Valve)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1766301997i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPipeVolumePump".into(),
prefab_hash: -1766301997i32,
desc: "This kit creates a <link=ThingStructureVolumePump><color=green>Volume Pump</color></link>."
.into(),
name: "Kit (Volume Pump)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1108244510i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlainCake".into(),
prefab_hash: -1108244510i32,
desc: "".into(),
name: "Cake".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1159179557i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlantEndothermic_Creative".into(),
prefab_hash: -1159179557i32,
desc: "".into(),
name: "Endothermic Plant Creative".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
851290561i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlantEndothermic_Genepool1".into(),
prefab_hash: 851290561i32,
desc: "<link=Agrizero><color=#0080FFFF>Agrizero\'s</color></link> Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split <link=GasWater><color=#44AD83>Water</color></link> into <link=GasVolatiles><color=#44AD83>Volatiles</color></link> and <link=GasOxygen><color=#44AD83>Oxygen</color></link>, the Winterspawn cools its surroundings, when supplied with sufficient <link=GasNitrogen><color=#44AD83>Nitrogen</color></link>. The alpha variant has a peak cooling and electrolysis capacity of 90Watts and is most efficient operating in air temperatures of 0 to 40 Degrees Celsius."
.into(),
name: "Winterspawn (Alpha variant)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1414203269i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlantEndothermic_Genepool2".into(),
prefab_hash: -1414203269i32,
desc: "<link=Agrizero><color=#0080FFFF>Agrizero\'s</color></link> Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split <link=GasWater><color=#44AD83>Water</color></link> into <link=GasVolatiles><color=#44AD83>Volatiles</color></link> and <link=GasOxygen><color=#44AD83>Oxygen</color></link>, the Winterspawn cools its surroundings when supplied with sufficient <link=GasNitrogen><color=#44AD83>Nitrogen</color></link>. The beta variant has a peak cooling and electrolysis capacity of 150Watts and is most efficient operating in air temperatures of 14 to 24 Degrees Celsius."
.into(),
name: "Winterspawn (Beta variant)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
173023800i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlantSampler".into(),
prefab_hash: 173023800i32,
desc: "The Plant Sampler allows you to take a <link=GeneticsPage><color=#0080FFFF>gene</color></link> sample of a growing plant. The sampler can then be placed in the <link=ThingAppliancePlantGeneticAnalyzer><color=green>Plant Genetic Analyzer</color></link> to attain and interpret the results."
.into(),
name: "Plant Sampler".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-532672323i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlantSwitchGrass".into(),
prefab_hash: -532672323i32,
desc: "".into(),
name: "Switch Grass".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1208890208i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlantThermogenic_Creative".into(),
prefab_hash: -1208890208i32,
desc: "".into(),
name: "Thermogenic Plant Creative".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-177792789i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlantThermogenic_Genepool1".into(),
prefab_hash: -177792789i32,
desc: "The <link=Agrizero><color=#0080FFFF>Agrizero\'s</color></link>-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of <link=GasVolatiles><color=#44AD83>Volatiles</color></link> and <link=GasOxygen><color=#44AD83>Oxygen</color></link>, and exhales heated <link=GasPollutant><color=#44AD83>Pollutant</color></link>."
.into(),
name: "Hades Flower (Alpha strain)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1819167057i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlantThermogenic_Genepool2".into(),
prefab_hash: 1819167057i32,
desc: "The <link=Agrizero><color=#0080FFFF>Agrizero\'s</color></link>-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of <link=GasVolatiles><color=#44AD83>Volatiles</color></link> and <link=GasOxygen><color=#44AD83>Oxygen</color></link>, and exhales heated <link=GasPollutant><color=#44AD83>Pollutant</color></link>. The beta strain is notably more efficient than the earlier, more experimental alpha variant."
.into(),
name: "Hades Flower (Beta strain)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
662053345i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPlasticSheets".into(),
prefab_hash: 662053345i32,
desc: "".into(),
name: "Plastic Sheets".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1929046963i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPotato".into(),
prefab_hash: 1929046963i32,
desc: " Potatoes are a simple, fast growing crop that can keep Stationeers alive in emergencies."
.into(),
name: "Potato".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 20u32,
reagents: Some(vec![("Potato".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2111886401i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPotatoBaked".into(),
prefab_hash: -2111886401i32,
desc: "".into(),
name: "Baked Potato".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 1u32,
reagents: Some(vec![("Potato".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
839924019i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPowerConnector".into(),
prefab_hash: 839924019i32,
desc: "This kit creates a <link=ThingStructurePowerConnector><color=green>Power Connector</color></link>."
.into(),
name: "Kit (Power Connector)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1277828144i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPumpkin".into(),
prefab_hash: 1277828144i32,
desc: "Pumpkins are a perennial plant, with both a long growth time, and a long time between harvests. Its low requirement for darkness allows for accelerated growing if provided with extra light."
.into(),
name: "Pumpkin".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 20u32,
reagents: Some(vec![("Pumpkin".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
62768076i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPumpkinPie".into(),
prefab_hash: 62768076i32,
desc: "".into(),
name: "Pumpkin Pie".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1277979876i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPumpkinSoup".into(),
prefab_hash: 1277979876i32,
desc: "Made using <link=ThingItemCookedPumpkin><color=green>Cooked Pumpkin</color></link> and an <link=ThingItemEmptyCan><color=green>Empty Can</color></link> in a <link=ThingAppliancePackagingMachine><color=green>Basic Packaging Machine</color></link> or <link=ThingStructureAdvancedPackagingMachine><color=green>Advanced Packaging Machine</color></link>. Fairly high in nutrition, canned food does not <link=DecayPage><color=#0080FFFF>decay</color></link>"
.into(),
name: "Pumpkin Soup".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1616308158i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIce".into(),
prefab_hash: -1616308158i32,
desc: "A frozen chunk of pure <link=GasWater><color=#44AD83>Water</color></link>"
.into(),
name: "Pure Ice Water".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1251009404i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceCarbonDioxide".into(),
prefab_hash: -1251009404i32,
desc: "A frozen chunk of pure <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link>"
.into(),
name: "Pure Ice Carbon Dioxide".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
944530361i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceHydrogen".into(),
prefab_hash: 944530361i32,
desc: "A frozen chunk of pure <link=GasHydrogen><color=#44AD83>Hydrogen</color></link>"
.into(),
name: "Pure Ice Hydrogen".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1715945725i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceLiquidCarbonDioxide".into(),
prefab_hash: -1715945725i32,
desc: "A frozen chunk of pure <link=GasLiquidCarbonDioxide><color=#44AD83>Liquid Carbon Dioxide</color></link>"
.into(),
name: "Pure Ice Liquid Carbon Dioxide".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1044933269i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceLiquidHydrogen".into(),
prefab_hash: -1044933269i32,
desc: "A frozen chunk of pure <link=GasLiquidHydrogen><color=#44AD83>Liquid Hydrogen</color></link>"
.into(),
name: "Pure Ice Liquid Hydrogen".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1674576569i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceLiquidNitrogen".into(),
prefab_hash: 1674576569i32,
desc: "A frozen chunk of pure <link=GasLiquidNitrogen><color=#44AD83>Liquid Nitrogen</color></link>"
.into(),
name: "Pure Ice Liquid Nitrogen".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1428477399i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceLiquidNitrous".into(),
prefab_hash: 1428477399i32,
desc: "A frozen chunk of pure <link=GasLiquidNitrousOxide><color=#44AD83>Liquid Nitrous Oxide</color></link>"
.into(),
name: "Pure Ice Liquid Nitrous".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
541621589i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceLiquidOxygen".into(),
prefab_hash: 541621589i32,
desc: "A frozen chunk of pure <link=GasLiquidOxygen><color=#44AD83>Liquid Oxygen</color></link>"
.into(),
name: "Pure Ice Liquid Oxygen".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1748926678i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceLiquidPollutant".into(),
prefab_hash: -1748926678i32,
desc: "A frozen chunk of pure <link=GasLiquidPollutant><color=#44AD83>Liquid Pollutant</color></link>"
.into(),
name: "Pure Ice Liquid Pollutant".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1306628937i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceLiquidVolatiles".into(),
prefab_hash: -1306628937i32,
desc: "A frozen chunk of pure <link=GasLiquidVolatiles><color=#44AD83>Liquid Volatiles</color></link>"
.into(),
name: "Pure Ice Liquid Volatiles".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1708395413i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceNitrogen".into(),
prefab_hash: -1708395413i32,
desc: "A frozen chunk of pure <link=GasNitrogen><color=#44AD83>Nitrogen</color></link>"
.into(),
name: "Pure Ice Nitrogen".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
386754635i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceNitrous".into(),
prefab_hash: 386754635i32,
desc: "A frozen chunk of pure <link=GasNitrousOxide><color=#44AD83>Nitrous Oxide</color></link>"
.into(),
name: "Pure Ice NitrousOxide".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1150448260i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceOxygen".into(),
prefab_hash: -1150448260i32,
desc: "A frozen chunk of pure <link=GasOxygen><color=#44AD83>Oxygen</color></link>"
.into(),
name: "Pure Ice Oxygen".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1755356i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIcePollutant".into(),
prefab_hash: -1755356i32,
desc: "A frozen chunk of pure <link=GasPollutant><color=#44AD83>Pollutant</color></link>"
.into(),
name: "Pure Ice Pollutant".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2073202179i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIcePollutedWater".into(),
prefab_hash: -2073202179i32,
desc: "A frozen chunk of <link=GasPollutedWater><color=#44AD83>Polluted Water</color></link>"
.into(),
name: "Pure Ice Polluted Water".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-874791066i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceSteam".into(),
prefab_hash: -874791066i32,
desc: "A frozen chunk of pure <link=GasSteam><color=#44AD83>Steam</color></link>"
.into(),
name: "Pure Ice Steam".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-633723719i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemPureIceVolatiles".into(),
prefab_hash: -633723719i32,
desc: "A frozen chunk of pure <link=GasVolatiles><color=#44AD83>Volatiles</color></link>"
.into(),
name: "Pure Ice Volatiles".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
495305053i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRTG".into(),
prefab_hash: 495305053i32,
desc: "This kit creates that miracle of modern science, a <link=ThingItemRTG><color=green>Kit (Creative RTG)</color></link>."
.into(),
name: "Kit (Creative RTG)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1817645803i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRTGSurvival".into(),
prefab_hash: 1817645803i32,
desc: "This kit creates a <link=ThingItemRTGSurvival><color=green>Kit (RTG)</color></link>."
.into(),
name: "Kit (RTG)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1641500434i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemReagentMix".into(),
prefab_hash: -1641500434i32,
desc: "Reagent mix is pure potential. A slurry of undifferentiated <link=OrePage><color=#0080FFFF>ores</color></link>, it is output by the <link=ThingStructureRecycler><color=green>Recycler</color></link> and can be fed into the <link=ThingStructureCentrifuge><color=green>Centrifuge</color></link> to separate and recover the individual materials. Reagent mix is also output by the <link=ThingStructureFurnace><color=green>Furnace</color></link> when the current contents are ejected without smelting a specific ingot."
.into(),
name: "Reagent Mix".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
678483886i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemRemoteDetonator".into(),
prefab_hash: 678483886i32,
desc: "".into(),
name: "Remote Detonator".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1773192190i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemReusableFireExtinguisher".into(),
prefab_hash: -1773192190i32,
desc: "Requires a canister filled with any inert liquid to opperate."
.into(),
name: "Fire Extinguisher (Reusable)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister
}
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
658916791i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRice".into(),
prefab_hash: 658916791i32,
desc: "Rice grows at a moderate rate as long as its supplied with plenty of water. Being more dependant on water, rice plants can easily die during periods of drought."
.into(),
name: "Rice".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Rice".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
871811564i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRoadFlare".into(),
prefab_hash: 871811564i32,
desc: "Designed to burn anywhere in the Solar System, the EZC magnesium fusee supplies its own oxygen to fuel combustion, and dispel the eternal night of space."
.into(),
name: "Road Flare".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 20u32,
reagents: None,
slot_class: Class::Flare,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2109945337i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRocketMiningDrillHead".into(),
prefab_hash: 2109945337i32,
desc: "Replaceable drill head for <link=ThingStructureRocketMiner><color=green>Rocket Miner</color></link>"
.into(),
name: "Mining-Drill Head (Basic)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::DrillHead,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1530764483i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRocketMiningDrillHeadDurable".into(),
prefab_hash: 1530764483i32,
desc: "".into(),
name: "Mining-Drill Head (Durable)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::DrillHead,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
653461728i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRocketMiningDrillHeadHighSpeedIce".into(),
prefab_hash: 653461728i32,
desc: "".into(),
name: "Mining-Drill Head (High Speed Ice)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::DrillHead,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1440678625i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRocketMiningDrillHeadHighSpeedMineral".into(),
prefab_hash: 1440678625i32,
desc: "".into(),
name: "Mining-Drill Head (High Speed Mineral)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::DrillHead,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-380904592i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRocketMiningDrillHeadIce".into(),
prefab_hash: -380904592i32,
desc: "".into(),
name: "Mining-Drill Head (Ice)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::DrillHead,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-684020753i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRocketMiningDrillHeadLongTerm".into(),
prefab_hash: -684020753i32,
desc: "".into(),
name: "Mining-Drill Head (Long Term)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::DrillHead,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1083675581i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRocketMiningDrillHeadMineral".into(),
prefab_hash: 1083675581i32,
desc: "".into(),
name: "Mining-Drill Head (Mineral)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::DrillHead,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1198702771i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemRocketScanningHead".into(),
prefab_hash: -1198702771i32,
desc: "".into(),
name: "Rocket Scanner Head".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::ScanningHead,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1661270830i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemScanner".into(),
prefab_hash: 1661270830i32,
desc: "A mysterious piece of technology, rumored to have Zrillian origins."
.into(),
name: "Handheld Scanner".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
687940869i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemScrewdriver".into(),
prefab_hash: 687940869i32,
desc: "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It\'s definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on <link=LogicUnitPage><color=#0080FFFF>logic</color></link> units."
.into(),
name: "Screwdriver".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1981101032i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSecurityCamera".into(),
prefab_hash: -1981101032i32,
desc: "Security cameras can be paired with a <link=ThingStructureMotionSensor><color=green>Motion Sensor</color></link>, then connected to a <link=ThingStructureConsole><color=green>Console</color></link> fitted with a <link=ThingCircuitboardCameraDisplay><color=green>Camera Display</color></link> for that \'always watched\' feeling."
.into(),
name: "Security Camera".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1176140051i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemSensorLenses".into(),
prefab_hash: -1176140051i32,
desc: "These <link=Norsec><color=#0080FFFF>Norsec</color></link> glasses might not be the most fashionable thing, but when a <link=ThingItemSensorProcessingUnitOreScanner><color=green>Sensor Processing Unit (Ore Scanner)</color></link> is inserted, Stationeers can use these handy glasses to x-ray the ground and find ores that are hidden beneath the surface."
.into(),
name: "Sensor Lenses".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Glasses,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Sensor Processing Unit".into(), typ : Class::SensorProcessingUnit
}
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1154200014i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSensorProcessingUnitCelestialScanner".into(),
prefab_hash: -1154200014i32,
desc: "".into(),
name: "Sensor Processing Unit (Celestial Scanner)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::SensorProcessingUnit,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1730464583i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSensorProcessingUnitMesonScanner".into(),
prefab_hash: -1730464583i32,
desc: "The T-Ray Scanner Sensor Processing Unit can be inserted into the <link=ThingItemSensorLenses><color=green>Sensor Lenses</color></link> to show an overlay of pipes and cables. This can be useful when building behind walls or other structures."
.into(),
name: "Sensor Processing Unit (T-Ray Scanner)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::SensorProcessingUnit,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1219128491i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSensorProcessingUnitOreScanner".into(),
prefab_hash: -1219128491i32,
desc: "The Sensor Processing unit can be inserted into <link=ThingItemSensorLenses><color=green>Sensor Lenses</color></link> to reveal underground minerals in a HUD."
.into(),
name: "Sensor Processing Unit (Ore Scanner)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::SensorProcessingUnit,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-290196476i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSiliconIngot".into(),
prefab_hash: -290196476i32,
desc: "".into(),
name: "Ingot (Silicon)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Silicon".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1103972403i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSiliconOre".into(),
prefab_hash: 1103972403i32,
desc: "Silicon is a chemical element with the symbol \"Si\" and is one of the most useful elements to <link=Stationeers><color=#0080FFFF>Stationeers</color></link>. Readily available throughout the universe, silicon is used in a range of <link=IngotPage><color=#0080FFFF>alloys</color></link>, glass, plastics and various electronic components a Stationeer may need to complete their mission."
.into(),
name: "Ore (Silicon)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Silicon".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-929742000i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSilverIngot".into(),
prefab_hash: -929742000i32,
desc: "".into(),
name: "Ingot (Silver)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Silver".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-916518678i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSilverOre".into(),
prefab_hash: -916518678i32,
desc: "Silver is a chemical element with the symbol \"Ag\". Valued by many <link=Stationeers><color=#0080FFFF>Stationeers</color></link> for its attractive luster and sheen, it is also used in a variety of <link=ElectronicPage><color=#0080FFFF>electronics</color></link> components and <link=IngotPage><color=#0080FFFF>alloys</color></link>."
.into(),
name: "Ore (Silver)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Silver".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-82508479i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSolderIngot".into(),
prefab_hash: -82508479i32,
desc: "".into(),
name: "Ingot (Solder)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Solder".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-365253871i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSolidFuel".into(),
prefab_hash: -365253871i32,
desc: "".into(),
name: "Solid Fuel (Hydrocarbon)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Hydrocarbon".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1883441704i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSoundCartridgeBass".into(),
prefab_hash: -1883441704i32,
desc: "".into(),
name: "Sound Cartridge Bass".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::SoundCartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1901500508i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSoundCartridgeDrums".into(),
prefab_hash: -1901500508i32,
desc: "".into(),
name: "Sound Cartridge Drums".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::SoundCartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1174735962i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSoundCartridgeLeads".into(),
prefab_hash: -1174735962i32,
desc: "".into(),
name: "Sound Cartridge Leads".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::SoundCartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1971419310i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSoundCartridgeSynth".into(),
prefab_hash: -1971419310i32,
desc: "".into(),
name: "Sound Cartridge Synth".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::SoundCartridge,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1387403148i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSoyOil".into(),
prefab_hash: 1387403148i32,
desc: "".into(),
name: "Soy Oil".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("Oil".into(), 1f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1924673028i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSoybean".into(),
prefab_hash: 1924673028i32,
desc: " Soybeans grow at a moderate rate, but require atmospheric <link=GasNitrogen><color=#44AD83>Nitrogen</color></link> to grow. Its main use is to create <link=ThingItemSoyOil><color=green>Soy Oil</color></link>"
.into(),
name: "Soybean".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("Soy".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1737666461i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSpaceCleaner".into(),
prefab_hash: -1737666461i32,
desc: "There was a time when humanity really wanted to keep space clean. That time has passed."
.into(),
name: "Space Cleaner".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
714830451i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemSpaceHelmet".into(),
prefab_hash: 714830451i32,
desc: "The basic space helmet insulates <link=Stationeers><color=#0080FFFF>Stationeers</color></link> against everything from hard vacuum to weird cooking smells. Providing a pressure-controlled, breathable atmosphere, it comes with a built-in light powered by your <link=ThingItemEvaSuit><color=green>Eva Suit</color></link> <link=ThingItemBatteryCell><color=green>Battery Cell (Small)</color></link>.\nIt also incorporates a lock/unlock feature to avoid accidental opening, as well as a flush function to expel and replace the internal atmosphere. If damaged, use <link=ThingItemDuctTape><color=green>Duct Tape</color></link> to fix it, or paint it any color you like using the <link=ThingAppliancePaintMixer><color=green>Paint Mixer</color></link>."
.into(),
name: "Space Helmet".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Helmet,
sorting_class: SortingClass::Clothing,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: Some(InternalAtmoInfo { volume: 3f32 }),
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::Volume, MemoryAccess::ReadWrite),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read), (LogicType::Flush,
MemoryAccess::Write), (LogicType::SoundAlert,
MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
675686937i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSpaceIce".into(),
prefab_hash: 675686937i32,
desc: "".into(),
name: "Space Ice".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2131916219i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSpaceOre".into(),
prefab_hash: 2131916219i32,
desc: "Ore mined from asteroids via the <link=ThingStructureRocketMiner><color=green>Rocket Miner</color></link> which then must be processed in the <link=ThingStructureCentrifuge><color=green>Centrifuge</color></link>, or <link=ThingStructureCombustionCentrifuge><color=green>Combustion Centrifuge</color></link> to produce smeltable ores."
.into(),
name: "Dirty Ore".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 100u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1260618380i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemSpacepack".into(),
prefab_hash: -1260618380i32,
desc: "The basic <link=CHAC><color=#0080FFFF>CHAC</color></link> spacepack isn\'t \'technically\' a jetpack, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the <link=AtmosphericsPage><color=#0080FFFF>canister</color></link> is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets <link=Stationeers><color=#0080FFFF>Stationeers</color></link> fly at 3m/s, compared to the more powerful <link=ThingItemJetpackBasic><color=green>Jetpack Basic</color></link> or <link=ThingItemHardJetpack><color=green>Hardsuit Jetpack</color></link>. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move."
.into(),
name: "Spacepack".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Back,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (3u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (4u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (5u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (6u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (7u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (8u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (9u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Propellant".into(), typ : Class::GasCanister },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-688107795i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanBlack".into(),
prefab_hash: -688107795i32,
desc: "Go classic, clandestine or just plain Gothic with black paint, which can be applied to most items. Each can has 20 uses."
.into(),
name: "Spray Paint (Black)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-498464883i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanBlue".into(),
prefab_hash: -498464883i32,
desc: "What kind of a color is blue? The kind of of color that says, \'Hey, what about me?\'"
.into(),
name: "Spray Paint (Blue)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
845176977i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanBrown".into(),
prefab_hash: 845176977i32,
desc: "In more artistic <link=Stationeers><color=#0080FFFF>Stationeers</color></link> circles, the absence of brown is often lamented, but seldom changed."
.into(),
name: "Spray Paint (Brown)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1880941852i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanGreen".into(),
prefab_hash: -1880941852i32,
desc: "Green is the color of life, and longing. Paradoxically, it\'s also the color of envy, and tolerance. It denotes sickness, youth, and wealth. But really, it\'s just what light does at around 500 billionths of a meter."
.into(),
name: "Spray Paint (Green)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1645266981i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanGrey".into(),
prefab_hash: -1645266981i32,
desc: "Arguably the most popular color in the universe, grey was invented so designers had something to do."
.into(),
name: "Spray Paint (Grey)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1918456047i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanKhaki".into(),
prefab_hash: 1918456047i32,
desc: "Not so much a single color, as a category of boredom, khaki is the pigmentation equivalent of a mild depressive episode."
.into(),
name: "Spray Paint (Khaki)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-158007629i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanOrange".into(),
prefab_hash: -158007629i32,
desc: "Orange is fun, but also suggestive of hazards. Sitting proudly in the middle of the visual spectrum, it has nothing to prove."
.into(),
name: "Spray Paint (Orange)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1344257263i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanPink".into(),
prefab_hash: 1344257263i32,
desc: "With the invention of enduring chemical dyes, the 20th century bestowed associations with innocence and tenderness upon this pale tint of red. Yet classically, it was the color of seduction and eroticism. Things change."
.into(),
name: "Spray Paint (Pink)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
30686509i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanPurple".into(),
prefab_hash: 30686509i32,
desc: "Purple is a curious color. You need to be careful with purple. It can be very good, or go horribly, horribly wrong."
.into(),
name: "Spray Paint (Purple)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1514393921i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanRed".into(),
prefab_hash: 1514393921i32,
desc: "The king of colors, red is perhaps the defining tone of the universe. Linked to blood, royalty, fire and damnation, it is the chromatic expression of power."
.into(),
name: "Spray Paint (Red)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
498481505i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanWhite".into(),
prefab_hash: 498481505i32,
desc: "White looks clean, sharp and nice. But <link=Stationeers><color=#0080FFFF>Stationeering</color></link> can be a dirty job. White tends to scuff."
.into(),
name: "Spray Paint (White)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
995468116i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayCanYellow".into(),
prefab_hash: 995468116i32,
desc: "A caricature of light itself, yellow lacks the self-confidence of red, or the swagger of purple. It\'s less fun than orange, but less emotionally limp than khaki. It\'s hard to know when yellow is appropriate, but it persists as a primary color regardless. Suggesting that yellow gonna yellow, no matter what anyone thinks."
.into(),
name: "Spray Paint (Yellow)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Bottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1289723966i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemSprayGun".into(),
prefab_hash: 1289723966i32,
desc: "Use with Spray cans in the <link=SlotSprayCan><color=orange>Spray Can</color></link> to paint structures, cables and pipes. Much more efficient and faster than doing it with individual spray cans."
.into(),
name: "Spray Gun".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Spray Can".into(), typ : Class::Bottle }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1448105779i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSteelFrames".into(),
prefab_hash: -1448105779i32,
desc: "An advanced and stronger version of <link=ThingItemIronFrames><color=green>Iron Frames</color></link>, steel frames are placed by right-clicking. To complete construction, use <link=ThingItemSteelSheets><color=green>Steel Sheets</color></link> and a <link=ThingItemWeldingTorch><color=green>Welding Torch</color></link> in your active hand."
.into(),
name: "Steel Frames".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 30u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-654790771i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSteelIngot".into(),
prefab_hash: -654790771i32,
desc: "Steel ingots are a metal alloy, crafted in a <link=ThingStructureFurnace><color=green>Furnace</color></link> by smelting <link=ThingItemIronOre><color=green>Ore (Iron)</color></link> and <link=ThingItemCoalOre><color=green>Ore (Coal)</color></link> at a ratio of 3:1.\nIt may not be elegant, but <link=ThingItemOxite><color=green>Ice (Oxite)</color></link> and <link=ThingItemVolatiles><color=green>Ice (Volatiles)</color></link> can be combined at a ratio of 1:2 in a furnace to create the necessary gas mixture for smelting."
.into(),
name: "Ingot (Steel)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Steel".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
38555961i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSteelSheets".into(),
prefab_hash: 38555961i32,
desc: "An advanced building material, <link=ThingItemSteelIngot><color=green>Ingot (Steel)</color></link> sheets are used when constructing a <link=ThingStructureFrame><color=green>Steel Frame</color></link> and several other <link=StructuresPage><color=#0080FFFF>wall</color></link> types."
.into(),
name: "Steel Sheets".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2038663432i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemStelliteGlassSheets".into(),
prefab_hash: -2038663432i32,
desc: "A stronger glass substitute.".into(),
name: "Stellite Glass Sheets".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1897868623i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemStelliteIngot".into(),
prefab_hash: -1897868623i32,
desc: "".into(),
name: "Ingot (Stellite)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Stellite".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2111910840i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSugar".into(),
prefab_hash: 2111910840i32,
desc: "".into(),
name: "Sugar".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Sugar".into(), 10f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1335056202i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSugarCane".into(),
prefab_hash: -1335056202i32,
desc: "".into(),
name: "Sugarcane".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("Sugar".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1274308304i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemSuitModCryogenicUpgrade".into(),
prefab_hash: -1274308304i32,
desc: "Enables suits with basic cooling functionality to work with cryogenic liquid."
.into(),
name: "Cryogenic Suit Upgrade".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::SuitMod,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-229808600i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemTablet".into(),
prefab_hash: -229808600i32,
desc: "The <link=Xigo><color=#0080FFFF>Xigo</color></link> handheld \'Padi\' tablet is an all-purpose data platform, provided as standard issue to all <link=Stationeers><color=#0080FFFF>Stationeers</color></link>. A dynamic multi-tool that accepts a range of <link=CartridgePage><color=#0080FFFF>cartridges</color></link>, the Padi becomes an <link=ThingCartridgeAtmosAnalyser><color=green>Atmos Analyzer</color></link> or <link=ThingCartridgeTracker><color=green>Tracker</color></link>, <link=ThingCartridgeMedicalAnalyser><color=green>Medical Analyzer</color></link>, <link=ThingCartridgeOreScanner><color=green>Ore Scanner</color></link>, <link=ThingCartridgeElectronicReader><color=green>eReader</color></link>, and various other functions."
.into(),
name: "Handheld Tablet".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Cartridge".into(), typ : Class::Cartridge }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
111280987i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemTerrainManipulator".into(),
prefab_hash: 111280987i32,
desc: "0.Mode0\n1.Mode1".into(),
name: "Terrain Manipulator".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Dirt Canister".into(), typ : Class::Ore }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-998592080i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemTomato".into(),
prefab_hash: -998592080i32,
desc: "Tomato plants are perennial, and will produce multiple harvests without needing to be replanted. Once the plant is mature, it will fruit at a moderate pace."
.into(),
name: "Tomato".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 20u32,
reagents: Some(vec![("Tomato".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
688734890i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemTomatoSoup".into(),
prefab_hash: 688734890i32,
desc: "Made using <link=ThingItemCookedTomato><color=green>Cooked Tomato</color></link>s and an <link=ThingItemEmptyCan><color=green>Empty Can</color></link> in a <link=ThingAppliancePackagingMachine><color=green>Basic Packaging Machine</color></link> or <link=ThingStructureAdvancedPackagingMachine><color=green>Advanced Packaging Machine</color></link>."
.into(),
name: "Tomato Soup".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-355127880i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemToolBelt".into(),
prefab_hash: -355127880i32,
desc: "If there\'s one piece of equipment that embodies <link=Stationeers><color=#0080FFFF>Stationeer</color></link> life above all else, it\'s the humble toolbelt (Editor\'s note: a recent <link=ODA><color=#0080FFFF>ODA</color></link> survey of iconic Stationeer equipment also rated the smoking, toxic ruins of an over-pressurized <link=ThingStructureFurnace><color=green>Furnace</color></link> lying amid the charred remains of your latest base very highly).\nDesigned to meet the most strict-ish ODA safety standards, the toolbelt\'s eight slots hold one thing: tools, and <link=ThingItemCableCoil><color=green>Cable Coil</color></link>. Not to be confused with the <link=ThingItemMiningBelt><color=green>Mining Belt</color></link>."
.into(),
name: "Tool Belt".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Belt,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ
: Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool },
SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name :
"Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ
: Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-800947386i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemTropicalPlant".into(),
prefab_hash: -800947386i32,
desc: "An anthurium, evolved in the jungles of South America, which will tolerate higher temperatures than most plants."
.into(),
name: "Tropical Lily".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1516581844i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemUraniumOre".into(),
prefab_hash: -1516581844i32,
desc: "In 1934, Enrico Fermi noticed that bombarding uranium with neutrons produced a burst of beta rays, and a new material. This process was named \'nuclear fission\', and resulted in cheap energy, the Cold War, and countless thousand deaths. While reasonably common throughout the Solar System, <link=Stationeers><color=#0080FFFF>Stationeers</color></link> are wary of the material."
.into(),
name: "Ore (Uranium)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 50u32,
reagents: Some(vec![("Uranium".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ore,
sorting_class: SortingClass::Ores,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1253102035i32,
ItemTemplate {
templateType: "Item".into(),
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 <link=ThingCartridgeAtmosAnalyser><color=green>Atmos Analyzer</color></link>.\n \n<link=GasVolatiles><color=#44AD83>Volatiles</color></link> combust in a 2:1 ratio with <link=GasOxygen><color=#44AD83>Oxygen</color></link>, creating <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link> and pollutants. However when catalysed via devices such as the <link=ThingH2Combustor><color=green>H2 Combustor</color></link> in the presence of <link=GasOxygen><color=#44AD83>Oxygen</color></link>, they produce\n <link=GasSteam><color=#44AD83>Steam</color></link> and heat with a modicum of <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link> and <link=GasPollutant><color=#44AD83>Pollutant</color></link> due to the autoignition of the volatiles in the chamber. Along with <link=GasOxygen><color=#44AD83>Oxygen</color></link>, volatiles gas is also the major component of fuel for such devices as the <link=ThingItemWeldingTorch><color=green>Welding Torch</color></link>.\n"
.into(),
name: "Ice (Volatiles)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 50u32,
reagents: None,
slot_class: Class::Ore,
sorting_class: SortingClass::Ices,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1567752627i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWallCooler".into(),
prefab_hash: -1567752627i32,
desc: "This kit creates a <link=ThingStructureWallCooler><color=green>Wall Cooler</color></link>."
.into(),
name: "Kit (Wall Cooler)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1880134612i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWallHeater".into(),
prefab_hash: 1880134612i32,
desc: "This kit creates a <link=ThingItemWallHeater><color=green>Kit (Wall Heater)</color></link>."
.into(),
name: "Kit (Wall Heater)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1108423476i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWallLight".into(),
prefab_hash: 1108423476i32,
desc: "This kit creates any one of ten <link=ThingItemWallLight><color=green>Kit (Lights)</color></link> variants."
.into(),
name: "Kit (Lights)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
156348098i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWaspaloyIngot".into(),
prefab_hash: 156348098i32,
desc: "".into(),
name: "Ingot (Waspaloy)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 500u32,
reagents: Some(vec![("Waspaloy".into(), 1f64)].into_iter().collect()),
slot_class: Class::Ingot,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
107741229i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWaterBottle".into(),
prefab_hash: 107741229i32,
desc: "Delicious and pure H20, refined from local sources as varied as Venusian ice and trans-Solar comets. Empty bottles can be refilled using the <link=ThingStructureWaterBottleFiller><color=green>Water Bottle Filler</color></link>."
.into(),
name: "Water Bottle".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::LiquidBottle,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
309693520i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWaterPipeDigitalValve".into(),
prefab_hash: 309693520i32,
desc: "".into(),
name: "Kit (Liquid Digital Valve)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-90898877i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWaterPipeMeter".into(),
prefab_hash: -90898877i32,
desc: "".into(),
name: "Kit (Liquid Pipe Meter)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1721846327i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWaterWallCooler".into(),
prefab_hash: -1721846327i32,
desc: "".into(),
name: "Kit (Liquid Wall Cooler)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 5u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-598730959i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemWearLamp".into(),
prefab_hash: -598730959i32,
desc: "".into(),
name: "Headlamp".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Helmet,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-2066892079i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "ItemWeldingTorch".into(),
prefab_hash: -2066892079i32,
desc: "Stored in the standard issue <link=Stationeers><color=#0080FFFF>Stationeers</color></link> <link=ThingItemToolBelt><color=green>Tool Belt</color></link>, the Arlite welding torch is used to construct a range of essential structures.\nAn upgraded version of the classic \'Zairo\' model first manufactured by <link=ExMin><color=#0080FFFF>ExMin</color></link> for modular space habitat assembly, the Arlite is powered by a single <link=ThingItemGasCanisterFuel><color=green>Canister (Fuel)</color></link> and designed to function equally well in deep space and deep gravity wells."
.into(),
name: "Welding Torch".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.5f32,
radiation_factor: 0.5f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1057658015i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWheat".into(),
prefab_hash: -1057658015i32,
desc: "A classical symbol of growth and new life, wheat takes a moderate time to grow. Its main use is to create <link=ReagentPage><color=#0080FFFF>flour</color></link> using the <link=ThingApplianceReagentProcessor><color=green>Reagent Processor</color></link>."
.into(),
name: "Wheat".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("Carbon".into(), 1f64)].into_iter().collect()),
slot_class: Class::Plant,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1535854074i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWireCutters".into(),
prefab_hash: 1535854074i32,
desc: "Wirecutters allow you to deconstruct various <link=StructurePage><color=#0080FFFF>structures</color></link>, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the <link=ThingItemToolBelt><color=green>Tool Belt</color></link>, along with other essential <link=ToolPage><color=#0080FFFF>tools</color></link>."
.into(),
name: "Wire Cutters".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-504717121i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "ItemWirelessBatteryCellExtraLarge".into(),
prefab_hash: -504717121i32,
desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full"
.into(),
name: "Wireless Battery Cell Extra Large".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Battery,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
-1826023284i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageAirConditioner1".into(),
prefab_hash: -1826023284i32,
desc: "".into(),
name: "Wreckage Air Conditioner".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
169888054i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageAirConditioner2".into(),
prefab_hash: 169888054i32,
desc: "".into(),
name: "Wreckage Air Conditioner".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-310178617i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageHydroponicsTray1".into(),
prefab_hash: -310178617i32,
desc: "".into(),
name: "Wreckage Hydroponics Tray".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-997763i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageLargeExtendableRadiator01".into(),
prefab_hash: -997763i32,
desc: "".into(),
name: "Wreckage Large Extendable Radiator".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
391453348i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageStructureRTG1".into(),
prefab_hash: 391453348i32,
desc: "".into(),
name: "Wreckage Structure RTG".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-834664349i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageStructureWeatherStation001".into(),
prefab_hash: -834664349i32,
desc: "".into(),
name: "Wreckage Structure Weather Station".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1464424921i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageStructureWeatherStation002".into(),
prefab_hash: 1464424921i32,
desc: "".into(),
name: "Wreckage Structure Weather Station".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
542009679i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageStructureWeatherStation003".into(),
prefab_hash: 542009679i32,
desc: "".into(),
name: "Wreckage Structure Weather Station".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1104478996i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageStructureWeatherStation004".into(),
prefab_hash: -1104478996i32,
desc: "".into(),
name: "Wreckage Structure Weather Station".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-919745414i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageStructureWeatherStation005".into(),
prefab_hash: -919745414i32,
desc: "".into(),
name: "Wreckage Structure Weather Station".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1344576960i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageStructureWeatherStation006".into(),
prefab_hash: 1344576960i32,
desc: "".into(),
name: "Wreckage Structure Weather Station".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
656649558i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageStructureWeatherStation007".into(),
prefab_hash: 656649558i32,
desc: "".into(),
name: "Wreckage Structure Weather Station".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1214467897i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageStructureWeatherStation008".into(),
prefab_hash: -1214467897i32,
desc: "".into(),
name: "Wreckage Structure Weather Station".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1662394403i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageTurbineGenerator1".into(),
prefab_hash: -1662394403i32,
desc: "".into(),
name: "Wreckage Turbine Generator".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
98602599i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageTurbineGenerator2".into(),
prefab_hash: 98602599i32,
desc: "".into(),
name: "Wreckage Turbine Generator".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1927790321i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageTurbineGenerator3".into(),
prefab_hash: 1927790321i32,
desc: "".into(),
name: "Wreckage Turbine Generator".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1682930158i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageWallCooler1".into(),
prefab_hash: -1682930158i32,
desc: "".into(),
name: "Wreckage Wall Cooler".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
45733800i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWreckageWallCooler2".into(),
prefab_hash: 45733800i32,
desc: "".into(),
name: "Wreckage Wall Cooler".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Wreckage,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1886261558i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ItemWrench".into(),
prefab_hash: -1886261558i32,
desc: "One of humanity\'s enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of <link=StructurePage><color=#0080FFFF>structures</color></link>"
.into(),
name: "Wrench".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Tool,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1932952652i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "KitSDBSilo".into(),
prefab_hash: 1932952652i32,
desc: "This kit creates a <link=ThingStructureSDBSilo><color=green>SDB Silo</color></link>."
.into(),
name: "Kit (SDB Silo)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
231903234i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "KitStructureCombustionCentrifuge".into(),
prefab_hash: 231903234i32,
desc: "".into(),
name: "Kit (Combustion Centrifuge)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Kits,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1427415566i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "KitchenTableShort".into(),
prefab_hash: -1427415566i32,
desc: "".into(),
name: "Kitchen Table (Short)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-78099334i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "KitchenTableSimpleShort".into(),
prefab_hash: -78099334i32,
desc: "".into(),
name: "Kitchen Table (Simple Short)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1068629349i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "KitchenTableSimpleTall".into(),
prefab_hash: -1068629349i32,
desc: "".into(),
name: "Kitchen Table (Simple Tall)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1386237782i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "KitchenTableTall".into(),
prefab_hash: -1386237782i32,
desc: "".into(),
name: "Kitchen Table (Tall)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1605130615i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "Lander".into(),
prefab_hash: 1605130615i32,
desc: "".into(),
name: "Lander".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name :
"Entity".into(), typ : Class::Entity }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1295222317i32,
StructureLogicTemplate {
templateType: "StructureLogic".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_2x2CenterPiece01".into(),
prefab_hash: -1295222317i32,
desc: "Recommended for larger traders. This allows for the creation of 4x4 and 6x6 landing areas with symetrical doors"
.into(),
name: "Landingpad 2x2 Center Piece".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![].into_iter().collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
912453390i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_BlankPiece".into(),
prefab_hash: 912453390i32,
desc: "".into(),
name: "Landingpad".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1070143159i32,
StructureLogicTemplate {
templateType: "StructureLogic".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_CenterPiece01".into(),
prefab_hash: 1070143159i32,
desc: "The target point where the trader shuttle will land. Requires a clear view of the sky."
.into(),
name: "Landingpad Center".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![].into_iter().collect(),
modes: Some(
vec![
(0u32, "None".into()), (1u32, "NoContact".into()), (2u32,
"Moving".into()), (3u32, "Holding".into()), (4u32, "Landed"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
}
.into(),
);
map.insert(
1101296153i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_CrossPiece".into(),
prefab_hash: 1101296153i32,
desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area."
.into(),
name: "Landingpad Cross".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2066405918i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_DataConnectionPiece".into(),
prefab_hash: -2066405918i32,
desc: "Provides power to the landing pad. The data port must be connected to the data port of a computer with a communications motherboard for a trader to be called in to land."
.into(),
name: "Landingpad Data And Power".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read),
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::ContactTypeId, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "None".into()), (1u32, "NoContact".into()), (2u32,
"Moving".into()), (3u32, "Holding".into()), (4u32, "Landed"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::LandingPad, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::LandingPad, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
977899131i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_DiagonalPiece01".into(),
prefab_hash: 977899131i32,
desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area."
.into(),
name: "Landingpad Diagonal".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
817945707i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_GasConnectorInwardPiece".into(),
prefab_hash: 817945707i32,
desc: "".into(),
name: "Landingpad Gas Input".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::LandingPad, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1100218307i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_GasConnectorOutwardPiece".into(),
prefab_hash: -1100218307i32,
desc: "Pumps gas purchased from a trader out of the landing pad. You can increase the landing pad\'s gas storage capacity by adding more <link=ThingLandingpad_GasCylinderTankPiece><color=green>Landingpad Gas Storage</color></link> to the landing pad."
.into(),
name: "Landingpad Gas Output".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::LandingPad, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
170818567i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_GasCylinderTankPiece".into(),
prefab_hash: 170818567i32,
desc: "Increases the volume of the landing pads gas storage capacity. This volume is used for buying and selling gas to traders."
.into(),
name: "Landingpad Gas Storage".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1216167727i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_LiquidConnectorInwardPiece".into(),
prefab_hash: -1216167727i32,
desc: "".into(),
name: "Landingpad Liquid Input".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::LandingPad, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1788929869i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_LiquidConnectorOutwardPiece".into(),
prefab_hash: -1788929869i32,
desc: "Pumps liquid purchased from a trader out of the landing pad. You can increase the landing pad\'s liquid storage capacity by adding more <link=ThingLandingpad_GasCylinderTankPiece><color=green>Landingpad Gas Storage</color></link> to the landing pad."
.into(),
name: "Landingpad Liquid Output".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::LandingPad, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-976273247i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_StraightPiece01".into(),
prefab_hash: -976273247i32,
desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area."
.into(),
name: "Landingpad Straight".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1872345847i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_TaxiPieceCorner".into(),
prefab_hash: -1872345847i32,
desc: "".into(),
name: "Landingpad Taxi Corner".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
146051619i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_TaxiPieceHold".into(),
prefab_hash: 146051619i32,
desc: "".into(),
name: "Landingpad Taxi Hold".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1477941080i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_TaxiPieceStraight".into(),
prefab_hash: -1477941080i32,
desc: "".into(),
name: "Landingpad Taxi Straight".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1514298582i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "Landingpad_ThreshholdPiece".into(),
prefab_hash: -1514298582i32,
desc: "".into(),
name: "Landingpad Threshhold".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::LandingPad, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::LandingPad, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1531272458i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "LogicStepSequencer8".into(),
prefab_hash: 1531272458i32,
desc: "The <link=ODA><color=#0080FFFF>ODA</color></link> does not approve of soundtracks or other distractions.\nAs such, <link=Stationeers><color=#0080FFFF>Stationeers</color></link> have had to create their own musical accompaniment to the demanding labor of building and maintaining off-world infrastructure.\nCentral to this pastime is the step sequencer, which allows Stationeers to sequence short musical patterns or loops. \n\n<size=120%><b>DIY MUSIC - GETTING STARTED</b></size>\n\n1: Connect 8 <link=ThingDeviceStepUnit><color=green>Device Step Unit</color></link>s to your step sequencer via the data port on the left hand side.\n\n2: Label each step unit, then assign step units 1 through 8 on the step sequencer using the screwdriver.\n\n3: Select the output speaker (eg <link=ThingPassiveSpeaker><color=green>Passive Speaker</color></link>) where the sequencer will play the sounds. This needs to be connected to the logic network on the right hand side of the sequencer.\n\n4: Place a <link=ThingStopWatch><color=green>Stop Watch</color></link> and use a <link=ThingStructureLogicReader><color=green>Logic Reader</color></link> and <link=ThingStructureLogicWriter><color=green>Logic Writer</color></link> to write the time to the time variable on the sequencer.\n\n5: Set the BPM on the sequencer using a <link=ThingStructureLogicDial><color=green>Dial</color></link> and a <link=ThingStructureLogicWriter><color=green>Logic Writer</color></link> to write to the sequencer\'s BPM variable. A higher bpm will play the sequence faster. \n\n6: Insert a sound cartridge of your choosing and select which variant of sound you wish to play by pushing the arrow buttons located above and below the sound cartridge slot.\n\n7: Choose the pitch of the sounds to play by setting the dial on each of your 8 step units to the desired note. With drums, each note is a different drum sounds. You can trial your sounds by pushing the activate button on each step unit (with the sequencer inactive).\n\n8: Get freaky with the <link=ThingDeviceLfoVolume><color=green>Low frequency oscillator</color></link>.\n\n9: Finally, activate the sequencer, Vibeoneer."
.into(),
name: "Logic Step Sequencer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Time, MemoryAccess::ReadWrite), (LogicType::Bpm,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Whole Note".into()), (1u32, "Half Note".into()), (2u32,
"Quarter Note".into()), (3u32, "Eighth Note".into()), (4u32,
"Sixteenth Note".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Sound Cartridge".into(), typ : Class::SoundCartridge }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-99064335i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "Meteorite".into(),
prefab_hash: -99064335i32,
desc: "".into(),
name: "Meteorite".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1667675295i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "MonsterEgg".into(),
prefab_hash: -1667675295i32,
desc: "<N:EN:MonsterEgg>".into(),
name: "<N:EN:MonsterEgg>".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-337075633i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "MotherboardComms".into(),
prefab_hash: -337075633i32,
desc: "When placed in a <link=ThingStructureComputer><color=green>Computer</color></link> and connected to a <link=ThingLandingpad_DataConnectionPiece><color=green>Landingpad Data And Power</color></link>, a <link=ThingStructureSatelliteDish><color=green>Medium Satellite Dish</color></link>, and a <link=ThingStructureVendingMachine><color=green>Vending Machine</color></link> allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the <link=ThingStructureSatelliteDish><color=green>Medium Satellite Dish</color></link> 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 <link=ThingLandingpad_CenterPiece01><color=green>Landingpad Center</color></link> at the center is required for a trader to land."
.into(),
name: "Communications Motherboard".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Motherboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
502555944i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "MotherboardLogic".into(),
prefab_hash: 502555944i32,
desc: "Motherboards are connected to <link=ThingStructureComputer><color=green>Computer</color></link>s to perform various technical functions.\nThe <link=Norsec><color=#0080FFFF>Norsec-designed</color></link> K-cops logic motherboard allows <link=Stationeers><color=#0080FFFF>Stationeers</color></link> to set variables and actions on specific <link=LogicUnitPage><color=#0080FFFF>logic</color></link>-controlled items."
.into(),
name: "Logic Motherboard".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Motherboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-127121474i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "MotherboardMissionControl".into(),
prefab_hash: -127121474i32,
desc: "<N:EN:MotherboardMissionControl>".into(),
name: "<N:EN:MotherboardMissionControl>".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Motherboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-161107071i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "MotherboardProgrammableChip".into(),
prefab_hash: -161107071i32,
desc: "When placed in a <link=ThingStructureComputer><color=green>Computer</color></link>, the IC Editor allows players to write and edit IC code, which can then be uploaded to a <link=ThingItemIntegratedCircuit10><color=green>Integrated Circuit (IC10)</color></link> if housed in an <link=ThingStructureCircuitHousing><color=green>IC Housing</color></link>."
.into(),
name: "IC Editor Motherboard".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Motherboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-806986392i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "MotherboardRockets".into(),
prefab_hash: -806986392i32,
desc: "".into(),
name: "Rocket Control Motherboard".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Motherboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1908268220i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "MotherboardSorter".into(),
prefab_hash: -1908268220i32,
desc: "Motherboards are connected to <link=ThingStructureComputer><color=green>Computer</color></link>s to perform various technical functions.\nThe <link=Norsec><color=#0080FFFF>Norsec-designed</color></link> K-cops 10-10 sorter motherboard permits <link=Stationeers><color=#0080FFFF>Stationeers</color></link> to control which items a <link=ThingStructureSorter><color=green>Sorter</color></link> does, and does not, permit to pass."
.into(),
name: "Sorter Motherboard".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Motherboard,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1930442922i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "MothershipCore".into(),
prefab_hash: -1930442922i32,
desc: "A relic of from an earlier era of space ambition, <link=Sinotai><color=#0080FFFF>Sinotai\'s</color></link> mothership cores formed the central element of a generation\'s space-going creations. While Sinotai\'s pivot to smaller, modular craft upset some purists, motherships continue to be built and maintained by dedicated enthusiasts."
.into(),
name: "Mothership Core".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
155856647i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "NpcChick".into(),
prefab_hash: 155856647i32,
desc: "".into(),
name: "Chick".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Brain".into(), typ : Class::Organ }, SlotInfo { name :
"Lungs".into(), typ : Class::Organ }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
399074198i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "NpcChicken".into(),
prefab_hash: 399074198i32,
desc: "".into(),
name: "Chicken".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Brain".into(), typ : Class::Organ }, SlotInfo { name :
"Lungs".into(), typ : Class::Organ }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
248893646i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "PassiveSpeaker".into(),
prefab_hash: 248893646i32,
desc: "".into(),
name: "Passive Speaker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Volume, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::ReadWrite), (LogicType::SoundAlert,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::ReadWrite), (LogicType::NameHash,
MemoryAccess::ReadWrite)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
443947415i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "PipeBenderMod".into(),
prefab_hash: 443947415i32,
desc: "Apply to an <link=ThingStructureHydraulicPipeBender><color=green>Hydraulic Pipe Bender</color></link> with a <link=ThingItemWeldingTorch><color=green>Welding Torch</color></link> or <link=ThingItemArcWelder><color=green>Arc Welder</color></link> to upgrade for increased processing speed and more recipe options."
.into(),
name: "Pipe Bender Mod".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1958705204i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "PortableComposter".into(),
prefab_hash: -1958705204i32,
desc: "A simple composting device, the basic composter creates <link=ThingFertilizer><color=green>Fertilizer</color></link> out of organic matter. It accepts <link=OrganicPage><color=#0080FFFF>food</color></link>, <link=ThingDecayedFood><color=green>Decayed Food</color></link> or <link=ThingItemBiomass><color=green>Biomass</color></link>. It requires a full <link=ThingItemLiquidCanisterEmpty><color=green>Liquid Canister</color></link> and a battery to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat.\n\n<size=120%><b>Compost composition</b></size>\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer\'s effects on plants will vary depending on the respective proportions of its ingredients.\n\n- <link=OrganicPage><color=#0080FFFF>food</color></link> increases PLANT YIELD up to two times\n- <link=ThingDecayedFood><color=green>Decayed Food</color></link> increases plant GROWTH SPEED up to two times\n- <link=ThingItemBiomass><color=green>Biomass</color></link> increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for"
.into(),
name: "Portable Composter".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::Battery }, SlotInfo { name : "Liquid Canister".into(), typ :
Class::LiquidCanister }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
2043318949i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "PortableSolarPanel".into(),
prefab_hash: 2043318949i32,
desc: "".into(),
name: "Portable Solar Panel".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
399661231i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "RailingElegant01".into(),
prefab_hash: 399661231i32,
desc: "".into(),
name: "Railing Elegant (Type 1)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1898247915i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "RailingElegant02".into(),
prefab_hash: -1898247915i32,
desc: "".into(),
name: "Railing Elegant (Type 2)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2072792175i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "RailingIndustrial02".into(),
prefab_hash: -2072792175i32,
desc: "".into(),
name: "Railing Industrial (Type 2)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
980054869i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ReagentColorBlue".into(),
prefab_hash: 980054869i32,
desc: "".into(),
name: "Color Dye (Blue)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("ColorBlue".into(), 10f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
120807542i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ReagentColorGreen".into(),
prefab_hash: 120807542i32,
desc: "".into(),
name: "Color Dye (Green)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("ColorGreen".into(), 10f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-400696159i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ReagentColorOrange".into(),
prefab_hash: -400696159i32,
desc: "".into(),
name: "Color Dye (Orange)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(
vec![("ColorOrange".into(), 10f64)].into_iter().collect(),
),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1998377961i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ReagentColorRed".into(),
prefab_hash: 1998377961i32,
desc: "".into(),
name: "Color Dye (Red)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(vec![("ColorRed".into(), 10f64)].into_iter().collect()),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
635208006i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ReagentColorYellow".into(),
prefab_hash: 635208006i32,
desc: "".into(),
name: "Color Dye (Yellow)".into(),
},
item: ItemInfo {
consumable: true,
filter_type: None,
ingredient: true,
max_quantity: 100u32,
reagents: Some(
vec![("ColorYellow".into(), 10f64)].into_iter().collect(),
),
slot_class: Class::None,
sorting_class: SortingClass::Resources,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-788672929i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "RespawnPoint".into(),
prefab_hash: -788672929i32,
desc: "Place a respawn point to set a player entry point to your base when loading in, or returning from the dead."
.into(),
name: "Respawn Point".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-491247370i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "RespawnPointWallMounted".into(),
prefab_hash: -491247370i32,
desc: "".into(),
name: "Respawn Point (Mounted)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
434786784i32,
ItemCircuitHolderTemplate {
templateType: "ItemCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "Robot".into(),
prefab_hash: 434786784i32,
desc: "Designed by - presumably drunk - <link=Norsec><color=#0080FFFF>Norsec</color></link> roboticists, AIMeE (or Automated Independent Mechanical Entity) can be a <link=Stationeers><color=#0080FFFF>Stationeer\'s</color></link> best friend, or tiresome nemesis, or both several times in the same day. \n \nIntended to unearth and retrieve ores automatically, the unit requires basic programming knowledge to operate, and <link=ThingMotherboardProgrammableChip><color=green>IC Editor Motherboard</color></link>.\n\nAIMEe has 7 modes:\n\nRobotMode.None = 0 = Do nothing\nRobotMode.None = 1 = Follow nearest player\nRobotMode.None = 2 = Move to target in straight line\nRobotMode.None = 3 = Wander around looking for ores in 15 co-ords radius\nRobotMode.None = 4 = Unload in chute input or chute bin within 3 meters / 1.5 large grids\nRobotMode.None = 5 = Path(find) to target\nRobotMode.None = 6 = Automatic assigned state, shows when storage slots are fullConnects to <pos=300><link=ThingStructureLogicTransmitter><color=green>Logic Transmitter</color></link>"
.into(),
name: "AIMeE Bot".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (3u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (4u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (5u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (6u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (7u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (8u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (9u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::PressureExternal, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::TemperatureExternal,
MemoryAccess::Read), (LogicType::PositionX, MemoryAccess::Read),
(LogicType::PositionY, MemoryAccess::Read), (LogicType::PositionZ,
MemoryAccess::Read), (LogicType::VelocityMagnitude,
MemoryAccess::Read), (LogicType::VelocityRelativeX,
MemoryAccess::Read), (LogicType::VelocityRelativeY,
MemoryAccess::Read), (LogicType::VelocityRelativeZ,
MemoryAccess::Read), (LogicType::TargetX, MemoryAccess::Write),
(LogicType::TargetY, MemoryAccess::Write), (LogicType::TargetZ,
MemoryAccess::Write), (LogicType::MineablesInVicinity,
MemoryAccess::Read), (LogicType::MineablesInQueue,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::ForwardX, MemoryAccess::Read), (LogicType::ForwardY,
MemoryAccess::Read), (LogicType::ForwardZ, MemoryAccess::Read),
(LogicType::Orientation, MemoryAccess::Read), (LogicType::VelocityX,
MemoryAccess::Read), (LogicType::VelocityY, MemoryAccess::Read),
(LogicType::VelocityZ, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "None".into()), (1u32, "Follow".into()), (2u32,
"MoveToTarget".into()), (3u32, "Roam".into()), (4u32, "Unload"
.into()), (5u32, "PathToTarget".into()), (6u32, "StorageFull"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: true,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Programmable Chip".into(), typ : Class::ProgrammableChip },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore },
SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name :
"Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ :
Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
350726273i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "RoverCargo".into(),
prefab_hash: 350726273i32,
desc: "Connects to <pos=300><link=ThingStructureLogicTransmitter><color=green>Logic Transmitter</color></link>"
.into(),
name: "Rover (Cargo)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.01f32,
radiation_factor: 0.01f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::FilterType, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (6u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (7u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (8u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (9u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (10u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (11u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (12u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (13u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (14u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (15u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: true,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Entity".into(), typ : Class::Entity }, SlotInfo { name
: "Entity".into(), typ : Class::Entity }, SlotInfo { name : "Gas Filter"
.into(), typ : Class::GasFilter }, SlotInfo { name : "Gas Filter".into(),
typ : Class::GasFilter }, SlotInfo { name : "Gas Filter".into(), typ :
Class::GasFilter }, SlotInfo { name : "Gas Canister".into(), typ :
Class::GasCanister }, SlotInfo { name : "Gas Canister".into(), typ :
Class::GasCanister }, SlotInfo { name : "Gas Canister".into(), typ :
Class::GasCanister }, SlotInfo { name : "Gas Canister".into(), typ :
Class::GasCanister }, SlotInfo { name : "Battery".into(), typ :
Class::Battery }, SlotInfo { name : "Battery".into(), typ :
Class::Battery }, SlotInfo { name : "Battery".into(), typ :
Class::Battery }, SlotInfo { name : "Container Slot".into(), typ :
Class::None }, SlotInfo { name : "Container Slot".into(), typ :
Class::None }, SlotInfo { name : "<N:EN:GasTank>".into(), typ :
Class::None }, SlotInfo { name : "<N:EN:GasTank>".into(), typ :
Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-2049946335i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "Rover_MkI".into(),
prefab_hash: -2049946335i32,
desc: "A distant cousin of the jeep, the Mk I {<link=Sinotai><color=#0080FFFF>Sinotai</color></link> electric rover is one of the most simple and durable light vehicles in the known universe. Able to carry two passengers and cargo such as the <link=ThingDynamicGasCanisterAir><color=green>Portable Gas Tank (Air)</color></link> or <link=ThingCrate><color=green><N:EN:Crate></color></link>, it is powered by up to three batteries, accepting everything including <link=ThingItemBatteryCellNuclear><color=green>Battery Cell (Nuclear)</color></link>.\nA quad-array of hub-mounted electric engines propels the reinforced aluminium frame over most terrain and modest obstacles. While the Mk I is designed for stability in low-horizontality circumstances, if it rolls, try using your <link=ThingItemCrowbar><color=green>Crowbar</color></link> to put it right way up.Connects to <pos=300><link=ThingStructureLogicTransmitter><color=green>Logic Transmitter</color></link>"
.into(),
name: "Rover MkI".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (2u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (6u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (7u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (8u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (9u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (10u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: true,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Entity".into(), typ : Class::Entity }, SlotInfo { name
: "Entity".into(), typ : Class::Entity }, SlotInfo { name : "Battery"
.into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), typ
: Class::Battery }, SlotInfo { name : "Battery".into(), typ :
Class::Battery }, SlotInfo { name : "<N:EN:ContainerConnection>".into(),
typ : Class::None }, SlotInfo { name : "<N:EN:ContainerConnection>"
.into(), typ : Class::None }, SlotInfo { name :
"<N:EN:GasTankConnection>".into(), typ : Class::None }, SlotInfo { name :
"<N:EN:GasTankConnection>".into(), typ : Class::None }, SlotInfo { name :
"<N:EN:GasTankConnection>".into(), typ : Class::None }, SlotInfo { name :
"<N:EN:GasTankConnection>".into(), typ : Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
861674123i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "Rover_MkI_build_states".into(),
prefab_hash: 861674123i32,
desc: "".into(),
name: "Rover MKI".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-256607540i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SMGMagazine".into(),
prefab_hash: -256607540i32,
desc: "".into(),
name: "SMG Magazine".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Magazine,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1139887531i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Cocoa".into(),
prefab_hash: 1139887531i32,
desc: "".into(),
name: "Cocoa Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1290755415i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Corn".into(),
prefab_hash: -1290755415i32,
desc: "Grow a <link=ThingItemCorn><color=green>Corn</color></link>."
.into(),
name: "Corn Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1990600883i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Fern".into(),
prefab_hash: -1990600883i32,
desc: "Grow a <link=ThingItemFern><color=green>Fern</color></link>."
.into(),
name: "Fern Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
311593418i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Mushroom".into(),
prefab_hash: 311593418i32,
desc: "Grow a <link=ThingItemMushroom><color=green>Mushroom</color></link>."
.into(),
name: "Mushroom Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1005571172i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Potato".into(),
prefab_hash: 1005571172i32,
desc: "Grow a <link=ThingItemPotato><color=green>Potato</color></link>."
.into(),
name: "Potato Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1423199840i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Pumpkin".into(),
prefab_hash: 1423199840i32,
desc: "Grow a <link=ThingItemPumpkin><color=green>Pumpkin</color></link>."
.into(),
name: "Pumpkin Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1691151239i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Rice".into(),
prefab_hash: -1691151239i32,
desc: "Grow some <link=ThingItemRice><color=green>Rice</color></link>."
.into(),
name: "Rice Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1783004244i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Soybean".into(),
prefab_hash: 1783004244i32,
desc: "Grow some <link=ThingItemSoybean><color=green>Soybean</color></link>."
.into(),
name: "Soybean Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1884103228i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_SugarCane".into(),
prefab_hash: -1884103228i32,
desc: "".into(),
name: "Sugarcane Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
488360169i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Switchgrass".into(),
prefab_hash: 488360169i32,
desc: "".into(),
name: "Switchgrass Seed".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1922066841i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Tomato".into(),
prefab_hash: -1922066841i32,
desc: "Grow a <link=ThingItemTomato><color=green>Tomato</color></link>."
.into(),
name: "Tomato Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-654756733i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "SeedBag_Wheet".into(),
prefab_hash: -654756733i32,
desc: "Grow some <link=ThingItemWheat><color=green>Wheat</color></link>."
.into(),
name: "Wheat Seeds".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 10u32,
reagents: None,
slot_class: Class::Plant,
sorting_class: SortingClass::Food,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1991297271i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "SpaceShuttle".into(),
prefab_hash: -1991297271i32,
desc: "An antiquated <link=Sinotai><color=#0080FFFF>Sinotai</color></link> transport craft, long since decommissioned."
.into(),
name: "Space Shuttle".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Captain\'s Seat".into(), typ : Class::Entity },
SlotInfo { name : "Passenger Seat Left".into(), typ : Class::Entity },
SlotInfo { name : "Passenger Seat Right".into(), typ : Class::Entity }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1527229051i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StopWatch".into(),
prefab_hash: -1527229051i32,
desc: "".into(),
name: "Stop Watch".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Time, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1298920475i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureAccessBridge".into(),
prefab_hash: 1298920475i32,
desc: "Extendable bridge that spans three grids".into(),
name: "Access Bridge".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1129453144i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureActiveVent".into(),
prefab_hash: -1129453144i32,
desc: "The active vent is a powered device for maintaining <link=GasPage><color=#0080FFFF>gas</color></link> 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 <link=ThingStructureConsole><color=green>Console</color></link>. Default pressure is 101kPa for Outward; 0kPa for Inward ..."
.into(),
name: "Active Vent".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::PressureExternal,
MemoryAccess::ReadWrite), (LogicType::PressureInternal,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Outward".into()), (1u32, "Inward".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
446212963i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureAdvancedComposter".into(),
prefab_hash: 446212963i32,
desc: "The advanced composter creates <link=ThingFertilizer><color=green>Fertilizer</color></link> out of organic matter. It accepts <link=OrganicPage><color=#0080FFFF>food</color></link>, <link=ThingDecayedFood><color=green>Decayed Food</color></link> or <link=ThingItemBiomass><color=green>Biomass</color></link>. It requires <link=GasWater><color=#44AD83>Water</color></link> and power to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat. \n\n<size=120%><b>Compost composition</b></size>\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer\'s effects on plants will vary depending on the respective proportions of its ingredients.\n\n- <link=OrganicPage><color=#0080FFFF>Food</color></link> increases PLANT YIELD up to two times\n- <link=ThingDecayedFood><color=green>Decayed Food</color></link> increases plant GROWTH SPEED up to two times\n- <link=ThingItemBiomass><color=green>Biomass</color></link> increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for up to five times\n"
.into(),
name: "Advanced Composter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::Quantity, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Data, role : ConnectionRole::None }, ConnectionInfo {
typ : ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
545937711i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureAdvancedFurnace".into(),
prefab_hash: 545937711i32,
desc: "The advanced furnace comes with integrated inlet and outlet pumps for controlling the unit\'s internal pressure."
.into(),
name: "Advanced Furnace".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RecipeHash, MemoryAccess::Read),
(LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::SettingInput, MemoryAccess::ReadWrite),
(LogicType::SettingOutput, MemoryAccess::ReadWrite),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: true,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
}
.into(),
);
map.insert(
-463037670i32,
StructureLogicDeviceConsumerMemoryTemplate {
templateType: "StructureLogicDeviceConsumerMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureAdvancedPackagingMachine".into(),
prefab_hash: -463037670i32,
desc: "The <link=Xigo><color=#0080FFFF>Xigo</color></link> Advanced Cannifier Multi-Plus Pro is an automateable packaging machine that uses <link=ThingItemEmptyCan><color=green>Empty Can</color></link>s and cooked <link=OrganicPage><color=#0080FFFF>food</color></link> to create canned sustenance that does not decay. Note that the ACMPP only accepts cooked food and tin cans."
.into(),
name: "Advanced Packaging Machine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RecipeHash,
MemoryAccess::ReadWrite), (LogicType::CompletionRatio,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemCookedCondensedMilk".into(), "ItemCookedCorn".into(),
"ItemCookedMushroom".into(), "ItemCookedPowderedEggs".into(),
"ItemCookedPumpkin".into(), "ItemCookedRice".into(),
"ItemCookedSoybean".into(), "ItemCookedTomato".into(), "ItemEmptyCan"
.into(), "ItemMilk".into(), "ItemPotatoBaked".into(), "ItemSoyOil"
.into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
fabricator_info: Some(FabricatorInfo {
tier: MachineTier::Undefined,
recipes: vec![
("ItemCannedCondensedMilk".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Milk".into(), 200f64), ("Steel"
.into(), 1f64)] .into_iter().collect() }), ("ItemCannedEdamame"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
0f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents : vec![("Oil"
.into(), 1f64), ("Soy".into(), 15f64), ("Steel".into(), 1f64)]
.into_iter().collect() }), ("ItemCannedMushroom".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature
: RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Mushroom".into(), 8f64), ("Oil"
.into(), 1f64), ("Steel".into(), 1f64)] .into_iter().collect() }),
("ItemCannedPowderedEggs".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Egg".into(), 5f64), ("Oil"
.into(), 1f64), ("Steel".into(), 1f64)] .into_iter().collect() }),
("ItemCannedRicePudding".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Oil".into(), 1f64), ("Rice"
.into(), 5f64), ("Steel".into(), 1f64)] .into_iter().collect() }),
("ItemCornSoup".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 0f64, temperature : RecipeRange { start : 1f64, stop :
80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64,
stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix {
rule : 0i64, is_any : true, is_any_to_remove : false, reagents :
vec![] .into_iter().collect() }, count_types : 3i64, reagents :
vec![("Corn".into(), 5f64), ("Oil".into(), 1f64), ("Steel".into(),
1f64)] .into_iter().collect() }), ("ItemFrenchFries".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature
: RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Oil".into(), 1f64), ("Potato"
.into(), 1f64), ("Steel".into(), 1f64)] .into_iter().collect() }),
("ItemPumpkinSoup".into(), Recipe { tier : MachineTier::TierOne, time
: 5f64, energy : 0f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Oil".into(), 1f64), ("Pumpkin".into(), 5f64),
("Steel".into(), 1f64)] .into_iter().collect() }), ("ItemTomatoSoup"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
0f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents : vec![("Oil"
.into(), 1f64), ("Steel".into(), 1f64), ("Tomato".into(), 5f64)]
.into_iter().collect() })
]
.into_iter()
.collect(),
}),
memory: MemoryInfo {
instructions: Some(
vec![
("DeviceSetLock".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>LOCK_STATE</color> | <color=orange>BOOL_8</color> |\r\n| <color=grey>16-63 </color> | <color=grey>UNUSED</color> | <color=grey>48</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |"
.into(), typ : "PrinterInstruction".into(), value : 6i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "LOCK_STATE".into(), typ :
InstructionPartType::Bool8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(48u32) }] .into_iter().collect() }),
("EjectAllReagents".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 8i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() }),
("EjectReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "PrinterInstruction".into(), value : 7i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "REAGENT_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("ExecuteRecipe".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 2i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "PREFAB_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("JumpIfNextInvalid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 4i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("JumpToAddress".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 5i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("MissingRecipeReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 54 TO 62</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY_CEIL</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 9i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((54u32,
Some(62u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY_CEIL".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "REAGENT_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("StackPointer".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESS 63</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>INDEX</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((63u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "INDEX".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("WaitUntilNextValid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 3i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::ReadWrite,
memory_size: 64u32,
},
}
.into(),
);
map.insert(
-2087593337i32,
StructureCircuitHolderTemplate {
templateType: "StructureCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "StructureAirConditioner".into(),
prefab_hash: -2087593337i32,
desc: "Built using the <link=ThingItemKitAtmospherics><color=green>Kit (Atmospherics)</color></link>, the <link=ExMin><color=#0080FFFF>ExMin-designed</color></link> air conditioner is used to raise or lower input gas temperature.\n\t \nThe unit has three pipe connections: input, output, and waste. Gas fed into the input will be heated or cooled to reach the target temperature, while the opposite will happen to gas on the waste network.\n\nMultiple Efficiency Multipliers can effect the amount of energy the Air Conditioner uses, and these can be view on the unit\'s green Information Panel. As the temperature difference between input and waste increases, the Temperature Differential Efficiency Multiplier will decrease. If input or waste temperature is extremely hot or cold, the Operational Temperature Efficiency will decrease. If the input or waste pipe has approach low pressures, the Pressure Efficiency will decrease.\n\n<link=ThingStructurePipeRadiator><color=green>Pipe Convection Radiator</color></link>s may be useful in bringing extreme pipe temperatures back towards normal world temperatures. \n \nFor more information on using the air conditioner, consult the <link=TemperatureControlPage><color=#0080FFFF>temperature control</color></link> Guides page."
.into(),
name: "Air Conditioner".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::PressureInput, MemoryAccess::Read),
(LogicType::TemperatureInput, MemoryAccess::Read),
(LogicType::RatioOxygenInput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioNitrogenInput, MemoryAccess::Read),
(LogicType::RatioPollutantInput, MemoryAccess::Read),
(LogicType::RatioVolatilesInput, MemoryAccess::Read),
(LogicType::RatioWaterInput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideInput, MemoryAccess::Read),
(LogicType::TotalMolesInput, MemoryAccess::Read),
(LogicType::PressureOutput, MemoryAccess::Read),
(LogicType::TemperatureOutput, MemoryAccess::Read),
(LogicType::RatioOxygenOutput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioPollutantOutput, MemoryAccess::Read),
(LogicType::RatioVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioWaterOutput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideOutput, MemoryAccess::Read),
(LogicType::TotalMolesOutput, MemoryAccess::Read),
(LogicType::PressureOutput2, MemoryAccess::Read),
(LogicType::TemperatureOutput2, MemoryAccess::Read),
(LogicType::RatioOxygenOutput2, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideOutput2, MemoryAccess::Read),
(LogicType::RatioNitrogenOutput2, MemoryAccess::Read),
(LogicType::RatioPollutantOutput2, MemoryAccess::Read),
(LogicType::RatioVolatilesOutput2, MemoryAccess::Read),
(LogicType::RatioWaterOutput2, MemoryAccess::Read),
(LogicType::RatioNitrousOxideOutput2, MemoryAccess::Read),
(LogicType::TotalMolesOutput2, MemoryAccess::Read),
(LogicType::CombustionInput, MemoryAccess::Read),
(LogicType::CombustionOutput, MemoryAccess::Read),
(LogicType::CombustionOutput2, MemoryAccess::Read),
(LogicType::OperationalTemperatureEfficiency, MemoryAccess::Read),
(LogicType::TemperatureDifferentialEfficiency, MemoryAccess::Read),
(LogicType::PressureEfficiency, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenInput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesOutput2, MemoryAccess::Read),
(LogicType::RatioSteamInput, MemoryAccess::Read),
(LogicType::RatioSteamOutput, MemoryAccess::Read),
(LogicType::RatioSteamOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantInput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideOutput2, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Idle".into()), (1u32, "Active".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Programmable Chip".into(), typ :
Class::ProgrammableChip }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Waste },
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: Some(2u32),
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2105052344i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureAirlock".into(),
prefab_hash: -2105052344i32,
desc: "The standard airlock is a powered portal that forms the main component of an airlock chamber. As long as the airlock is not locked, it can be manually opened using a crowbar."
.into(),
name: "Airlock".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1736080881i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureAirlockGate".into(),
prefab_hash: 1736080881i32,
desc: "1 x 1 modular door piece for building hangar doors.".into(),
name: "Small Hangar Door".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1811979158i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureAngledBench".into(),
prefab_hash: 1811979158i32,
desc: "".into(),
name: "Bench (Angled)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-247344692i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureArcFurnace".into(),
prefab_hash: -247344692i32,
desc: "The simplest smelting system available to the average <link=Stationeers><color=#0080FFFF>Stationeer</color></link>, <link=Recurso><color=#0080FFFF>Recurso\'s</color></link> arc furnace was forged itself in the depths of the Solar System to help explorational geologists determine the purity of potential asteroidal mining targets.\nCo-opted by the <link=ODA><color=#0080FFFF>ODA</color></link>, it now provides Stationeers with a way to produce pure ingots of various resources.\nThe smelting process also releases a range of by product <link=GasPage><color=#0080FFFF>gases</color></link>, principally <link=GasNitrogen><color=#44AD83>Nitrogen</color></link>, <link=GasCarbonDioxide><color=#44AD83>Carbon Dioxide</color></link>, <link=GasVolatiles><color=#44AD83>Volatiles</color></link> and <link=GasOxygen><color=#44AD83>Oxygen</color></link> in differing ratios. These can be recaptured from the atmosphere by filtering, but also make the arc furnace a risk in closed environments. \nUnlike the more advanced <link=ThingStructureFurnace><color=green>Furnace</color></link>, the arc furnace cannot create <link=IngotPage><color=#0080FFFF>alloys</color></link>."
.into(),
name: "Arc Furnace".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Reagents,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::RecipeHash, MemoryAccess::Read),
(LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::Ore }, SlotInfo { name :
"Export".into(), typ : Class::Ingot }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: true,
},
}
.into(),
);
map.insert(
1999523701i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureAreaPowerControl".into(),
prefab_hash: 1999523701i32,
desc: "An Area Power Control (APC) has three main functions: \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network.\nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only."
.into(),
name: "Area Power Control".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Charge, MemoryAccess::Read),
(LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::PowerPotential, MemoryAccess::Read),
(LogicType::PowerActual, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32,
"Discharging".into()), (3u32, "Charging".into()), (4u32,
"Charged".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Data Disk".into(), typ : Class::DataDisk }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1032513487i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureAreaPowerControlReversed".into(),
prefab_hash: -1032513487i32,
desc: "An Area Power Control (APC) has three main functions. \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network. \nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only."
.into(),
name: "Area Power Control".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Charge, MemoryAccess::Read),
(LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::PowerPotential, MemoryAccess::Read),
(LogicType::PowerActual, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32,
"Discharging".into()), (3u32, "Charging".into()), (4u32,
"Charged".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Data Disk".into(), typ : Class::DataDisk }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
7274344i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureAutoMinerSmall".into(),
prefab_hash: 7274344i32,
desc: "The <link=Recurso><color=#0080FFFF>Recurso</color></link> SquareDig autominer is a structure that when built will mine a vertical 2x2 shaft until it hits bedrock. The autominer can be connected to a chute system, and is controllable by a logic network. Note that the autominer outputs more <link=OrePage><color=#0080FFFF>ore</color></link> than a conventional <link=ThingItemMiningDrill><color=green>Mining Drill</color></link> over the same area."
.into(),
name: "Autominer (Small)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
336213101i32,
StructureLogicDeviceConsumerMemoryTemplate {
templateType: "StructureLogicDeviceConsumerMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureAutolathe".into(),
prefab_hash: 336213101i32,
desc: "The foundation of most <link=Stationeers><color=#0080FFFF>Stationeer</color></link> fabrication systems, the <link=ExMin><color=#0080FFFF>ExMin</color></link> autolathe is a multi-axis molecular compositional system. Its complexity demands considerable time to assemble, but it remains an indispensable creation tool. Upgrade the device using a <link=ThingAutolathePrinterMod><color=green>Autolathe Printer Mod</color></link> for additional recipes and faster processing speeds.\n\t "
.into(),
name: "Autolathe".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RecipeHash,
MemoryAccess::ReadWrite), (LogicType::CompletionRatio,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name
: "Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemAstroloyIngot".into(), "ItemConstantanIngot".into(),
"ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot"
.into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(),
"ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot"
.into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(),
"ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel"
.into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(),
"ItemWaspaloyIngot".into(), "ItemWasteIngot".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
fabricator_info: Some(FabricatorInfo {
tier: MachineTier::Undefined,
recipes: vec![
("CardboardBox".into(), Recipe { tier : MachineTier::TierOne, time :
2f64, energy : 120f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Silicon".into(), 2f64)] .into_iter().collect() }),
("ItemCableCoil".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 200f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Copper".into(), 0.5f64)] .into_iter().collect() }),
("ItemCoffeeMug".into(), Recipe { tier : MachineTier::TierOne, time :
1f64, energy : 70f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 1f64)] .into_iter().collect() }),
("ItemEggCarton".into(), Recipe { tier : MachineTier::TierOne, time :
10f64, energy : 100f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Silicon".into(), 2f64)] .into_iter().collect() }),
("ItemEmptyCan".into(), Recipe { tier : MachineTier::TierOne, time :
1f64, energy : 70f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Steel".into(), 1f64)] .into_iter().collect() }),
("ItemEvaSuit".into(), Recipe { tier : MachineTier::TierOne, time :
15f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 5f64), ("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemGlassSheets".into(), Recipe { tier :
MachineTier::TierOne, time : 1f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Silicon".into(), 2f64)]
.into_iter().collect() }), ("ItemIronFrames".into(), Recipe { tier :
MachineTier::TierOne, time : 4f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 4f64)]
.into_iter().collect() }), ("ItemIronSheets".into(), Recipe { tier :
MachineTier::TierOne, time : 1f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 1f64)]
.into_iter().collect() }), ("ItemKitAccessBridge".into(), Recipe {
tier : MachineTier::TierOne, time : 30f64, energy : 15000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
2f64), ("Solder".into(), 2f64), ("Steel".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitArcFurnace".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron"
.into(), 20f64)] .into_iter().collect() }), ("ItemKitAutolathe"
.into(), Recipe { tier : MachineTier::TierOne, time : 180f64, energy
: 36000f64, temperature : RecipeRange { start : 1f64, stop :
80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64,
stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix {
rule : 0i64, is_any : true, is_any_to_remove : false, reagents :
vec![] .into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 10f64), ("Gold".into(), 2f64), ("Iron".into(),
20f64)] .into_iter().collect() }), ("ItemKitBeds".into(), Recipe {
tier : MachineTier::TierOne, time : 10f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
5f64), ("Iron".into(), 20f64)] .into_iter().collect() }),
("ItemKitBlastDoor".into(), Recipe { tier : MachineTier::TierTwo,
time : 10f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 3f64), ("Steel".into(), 15f64)]
.into_iter().collect() }), ("ItemKitCentrifuge".into(), Recipe { tier
: MachineTier::TierOne, time : 60f64, energy : 18000f64, temperature
: RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron"
.into(), 20f64)] .into_iter().collect() }), ("ItemKitChairs".into(),
Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
5f64), ("Iron".into(), 20f64)] .into_iter().collect() }),
("ItemKitChute".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemKitCompositeCladding".into(), Recipe { tier :
MachineTier::TierOne, time : 1f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 1f64)]
.into_iter().collect() }), ("ItemKitCompositeFloorGrating".into(),
Recipe { tier : MachineTier::TierOne, time : 3f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
1f64)] .into_iter().collect() }), ("ItemKitCrate".into(), Recipe {
tier : MachineTier::TierOne, time : 10f64, energy : 200f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
10f64)] .into_iter().collect() }), ("ItemKitCrateMkII".into(), Recipe
{ tier : MachineTier::TierTwo, time : 10f64, energy : 200f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Gold".into(),
5f64), ("Iron".into(), 10f64)] .into_iter().collect() }),
("ItemKitCrateMount".into(), Recipe { tier : MachineTier::TierOne,
time : 10f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 10f64)] .into_iter().collect() }),
("ItemKitDeepMiner".into(), Recipe { tier : MachineTier::TierTwo,
time : 180f64, energy : 72000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 4i64,
reagents : vec![("Constantan".into(), 5f64), ("Electrum".into(),
5f64), ("Invar".into(), 10f64), ("Steel".into(), 50f64)] .into_iter()
.collect() }), ("ItemKitDoor".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 3f64), ("Iron"
.into(), 7f64)] .into_iter().collect() }),
("ItemKitElectronicsPrinter".into(), Recipe { tier :
MachineTier::TierOne, time : 120f64, energy : 12000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold"
.into(), 2f64), ("Iron".into(), 20f64)] .into_iter().collect() }),
("ItemKitFlagODA".into(), Recipe { tier : MachineTier::TierOne, time
: 5f64, energy : 100f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 8f64)] .into_iter().collect() }),
("ItemKitFurnace".into(), Recipe { tier : MachineTier::TierOne, time
: 120f64, energy : 12000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 10f64), ("Iron".into(), 30f64)]
.into_iter().collect() }), ("ItemKitFurniture".into(), Recipe { tier
: MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron"
.into(), 20f64)] .into_iter().collect() }),
("ItemKitHydraulicPipeBender".into(), Recipe { tier :
MachineTier::TierOne, time : 180f64, energy : 18000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold"
.into(), 2f64), ("Iron".into(), 20f64)] .into_iter().collect() }),
("ItemKitInteriorDoors".into(), Recipe { tier : MachineTier::TierOne,
time : 10f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 3f64), ("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemKitLadder".into(), Recipe { tier :
MachineTier::TierOne, time : 3f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 2f64)]
.into_iter().collect() }), ("ItemKitLocker".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemKitPipe".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 0.5f64)]
.into_iter().collect() }), ("ItemKitRailing".into(), Recipe { tier :
MachineTier::TierOne, time : 1f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 1f64)]
.into_iter().collect() }), ("ItemKitRecycler".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 12000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 10f64), ("Iron"
.into(), 20f64)] .into_iter().collect() }),
("ItemKitReinforcedWindows".into(), Recipe { tier :
MachineTier::TierOne, time : 7f64, energy : 700f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Steel".into(), 2f64)]
.into_iter().collect() }), ("ItemKitRespawnPointWallMounted".into(),
Recipe { tier : MachineTier::TierOne, time : 20f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
1f64), ("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemKitRocketManufactory".into(), Recipe { tier :
MachineTier::TierOne, time : 120f64, energy : 12000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold"
.into(), 2f64), ("Iron".into(), 20f64)] .into_iter().collect() }),
("ItemKitSDBHopper".into(), Recipe { tier : MachineTier::TierOne,
time : 10f64, energy : 700f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 15f64)] .into_iter().collect() }),
("ItemKitSecurityPrinter".into(), Recipe { tier :
MachineTier::TierOne, time : 180f64, energy : 36000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold"
.into(), 20f64), ("Steel".into(), 20f64)] .into_iter().collect() }),
("ItemKitSign".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemKitSorter".into(), Recipe { tier : MachineTier::TierOne, time :
10f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 1f64),
("Iron".into(), 10f64)] .into_iter().collect() }), ("ItemKitStacker"
.into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 2f64), ("Iron".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitStairs".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 15f64)]
.into_iter().collect() }), ("ItemKitStairwell".into(), Recipe { tier
: MachineTier::TierOne, time : 20f64, energy : 6000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 15f64)]
.into_iter().collect() }), ("ItemKitStandardChute".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Constantan"
.into(), 2f64), ("Electrum".into(), 2f64), ("Iron".into(), 3f64)]
.into_iter().collect() }), ("ItemKitTables".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron"
.into(), 20f64)] .into_iter().collect() }), ("ItemKitToolManufactory"
.into(), Recipe { tier : MachineTier::TierOne, time : 120f64, energy
: 24000f64, temperature : RecipeRange { start : 1f64, stop :
80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64,
stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix {
rule : 0i64, is_any : true, is_any_to_remove : false, reagents :
vec![] .into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 10f64), ("Iron".into(), 20f64)] .into_iter()
.collect() }), ("ItemKitWall".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Steel".into(), 1f64)]
.into_iter().collect() }), ("ItemKitWallArch".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Steel".into(), 1f64)]
.into_iter().collect() }), ("ItemKitWallFlat".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Steel".into(), 1f64)]
.into_iter().collect() }), ("ItemKitWallGeometry".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Steel".into(),
1f64)] .into_iter().collect() }), ("ItemKitWallIron".into(), Recipe {
tier : MachineTier::TierOne, time : 1f64, energy : 200f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
1f64)] .into_iter().collect() }), ("ItemKitWallPadded".into(), Recipe
{ tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Steel".into(),
1f64)] .into_iter().collect() }), ("ItemKitWindowShutter".into(),
Recipe { tier : MachineTier::TierOne, time : 7f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Iron".into(),
1f64), ("Steel".into(), 2f64)] .into_iter().collect() }),
("ItemPlasticSheets".into(), Recipe { tier : MachineTier::TierOne,
time : 1f64, energy : 200f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Silicon".into(), 0.5f64)] .into_iter().collect()
}), ("ItemSpaceHelmet".into(), Recipe { tier : MachineTier::TierOne,
time : 15f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)]
.into_iter().collect() }), ("ItemSteelFrames".into(), Recipe { tier :
MachineTier::TierOne, time : 7f64, energy : 800f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Steel".into(), 2f64)]
.into_iter().collect() }), ("ItemSteelSheets".into(), Recipe { tier :
MachineTier::TierOne, time : 3f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Steel".into(), 0.5f64)]
.into_iter().collect() }), ("ItemStelliteGlassSheets".into(), Recipe
{ tier : MachineTier::TierOne, time : 1f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Silicon".into(),
2f64), ("Stellite".into(), 1f64)] .into_iter().collect() }),
("ItemWallLight".into(), Recipe { tier : MachineTier::TierOne, time :
10f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 1f64),
("Silicon".into(), 1f64)] .into_iter().collect() }), ("KitSDBSilo"
.into(), Recipe { tier : MachineTier::TierOne, time : 120f64, energy
: 24000f64, temperature : RecipeRange { start : 1f64, stop :
80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64,
stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix {
rule : 0i64, is_any : true, is_any_to_remove : false, reagents :
vec![] .into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 10f64), ("Gold".into(), 20f64), ("Steel"
.into(), 15f64)] .into_iter().collect() }),
("KitStructureCombustionCentrifuge".into(), Recipe { tier :
MachineTier::TierTwo, time : 120f64, energy : 24000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Constantan".into(), 5f64),
("Invar".into(), 10f64), ("Steel".into(), 20f64)] .into_iter()
.collect() })
]
.into_iter()
.collect(),
}),
memory: MemoryInfo {
instructions: Some(
vec![
("DeviceSetLock".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>LOCK_STATE</color> | <color=orange>BOOL_8</color> |\r\n| <color=grey>16-63 </color> | <color=grey>UNUSED</color> | <color=grey>48</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |"
.into(), typ : "PrinterInstruction".into(), value : 6i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "LOCK_STATE".into(), typ :
InstructionPartType::Bool8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(48u32) }] .into_iter().collect() }),
("EjectAllReagents".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 8i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() }),
("EjectReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "PrinterInstruction".into(), value : 7i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "REAGENT_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("ExecuteRecipe".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 2i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "PREFAB_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("JumpIfNextInvalid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 4i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("JumpToAddress".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 5i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("MissingRecipeReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 54 TO 62</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY_CEIL</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 9i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((54u32,
Some(62u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY_CEIL".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "REAGENT_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("StackPointer".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESS 63</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>INDEX</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((63u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "INDEX".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("WaitUntilNextValid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 3i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::ReadWrite,
memory_size: 64u32,
},
}
.into(),
);
map.insert(
-1672404896i32,
StructureLogicDeviceConsumerMemoryTemplate {
templateType: "StructureLogicDeviceConsumerMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureAutomatedOven".into(),
prefab_hash: -1672404896i32,
desc: "".into(),
name: "Automated Oven".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RecipeHash,
MemoryAccess::ReadWrite), (LogicType::CompletionRatio,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemCorn".into(), "ItemEgg".into(), "ItemFertilizedEgg".into(),
"ItemFlour".into(), "ItemMilk".into(), "ItemMushroom".into(),
"ItemPotato".into(), "ItemPumpkin".into(), "ItemRice".into(),
"ItemSoybean".into(), "ItemSoyOil".into(), "ItemTomato".into(),
"ItemSugarCane".into(), "ItemCocoaTree".into(), "ItemCocoaPowder"
.into(), "ItemSugar".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
fabricator_info: Some(FabricatorInfo {
tier: MachineTier::TierOne,
recipes: vec![
("ItemBreadLoaf".into(), Recipe { tier : MachineTier::TierOne, time :
10f64, energy : 0f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Flour".into(), 200f64), ("Oil".into(), 5f64)]
.into_iter().collect() }), ("ItemCerealBar".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Flour".into(), 50f64)]
.into_iter().collect() }), ("ItemChocolateBar".into(), Recipe { tier
: MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Cocoa".into(), 2f64), ("Sugar"
.into(), 10f64)] .into_iter().collect() }), ("ItemChocolateCake"
.into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy :
0f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 5i64, reagents :
vec![("Cocoa".into(), 2f64), ("Egg".into(), 1f64), ("Flour".into(),
50f64), ("Milk".into(), 5f64), ("Sugar".into(), 50f64)] .into_iter()
.collect() }), ("ItemChocolateCerealBar".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Cocoa".into(), 1f64), ("Flour"
.into(), 50f64)] .into_iter().collect() }),
("ItemCookedCondensedMilk".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Milk".into(), 100f64)]
.into_iter().collect() }), ("ItemCookedCorn".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Corn".into(), 1f64)]
.into_iter().collect() }), ("ItemCookedMushroom".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature
: RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Mushroom".into(), 1f64)]
.into_iter().collect() }), ("ItemCookedPowderedEggs".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 0f64, temperature
: RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Egg".into(), 4f64)]
.into_iter().collect() }), ("ItemCookedPumpkin".into(), Recipe { tier
: MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Pumpkin".into(), 1f64)]
.into_iter().collect() }), ("ItemCookedRice".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Rice".into(), 3f64)]
.into_iter().collect() }), ("ItemCookedSoybean".into(), Recipe { tier
: MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Soy".into(), 5f64)]
.into_iter().collect() }), ("ItemCookedTomato".into(), Recipe { tier
: MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Tomato".into(), 1f64)]
.into_iter().collect() }), ("ItemFries".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Oil".into(), 5f64), ("Potato"
.into(), 1f64)] .into_iter().collect() }), ("ItemMuffin".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 0f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Egg".into(),
1f64), ("Flour".into(), 50f64), ("Milk".into(), 10f64)] .into_iter()
.collect() }), ("ItemPlainCake".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Egg".into(), 1f64), ("Flour"
.into(), 50f64), ("Milk".into(), 5f64), ("Sugar".into(), 50f64)]
.into_iter().collect() }), ("ItemPotatoBaked".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Potato".into(), 1f64)]
.into_iter().collect() }), ("ItemPumpkinPie".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 0f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Egg".into(), 1f64), ("Flour"
.into(), 100f64), ("Milk".into(), 10f64), ("Pumpkin".into(), 10f64)]
.into_iter().collect() })
]
.into_iter()
.collect(),
}),
memory: MemoryInfo {
instructions: Some(
vec![
("DeviceSetLock".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>LOCK_STATE</color> | <color=orange>BOOL_8</color> |\r\n| <color=grey>16-63 </color> | <color=grey>UNUSED</color> | <color=grey>48</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |"
.into(), typ : "PrinterInstruction".into(), value : 6i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "LOCK_STATE".into(), typ :
InstructionPartType::Bool8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(48u32) }] .into_iter().collect() }),
("EjectAllReagents".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 8i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() }),
("EjectReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "PrinterInstruction".into(), value : 7i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "REAGENT_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("ExecuteRecipe".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 2i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "PREFAB_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("JumpIfNextInvalid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 4i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("JumpToAddress".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 5i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("MissingRecipeReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 54 TO 62</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY_CEIL</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 9i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((54u32,
Some(62u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY_CEIL".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "REAGENT_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("StackPointer".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESS 63</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>INDEX</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((63u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "INDEX".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("WaitUntilNextValid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 3i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::ReadWrite,
memory_size: 64u32,
},
}
.into(),
);
map.insert(
2099900163i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBackLiquidPressureRegulator".into(),
prefab_hash: 2099900163i32,
desc: "Regulates the volume ratio of liquid in the input Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty."
.into(),
name: "Liquid Back Volume Regulator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1149857558i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBackPressureRegulator".into(),
prefab_hash: -1149857558i32,
desc: "Unlike the <link=ThingStructurePressureRegulator><color=green>Pressure Regulator</color></link>, which closes when the input exceeds a given pressure, the back pressure regulator opens when input pressure reaches a given value."
.into(),
name: "Back Pressure Regulator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1613497288i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBasketHoop".into(),
prefab_hash: -1613497288i32,
desc: "".into(),
name: "Basket Hoop".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-400115994i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBattery".into(),
prefab_hash: -400115994i32,
desc: "Providing large-scale, reliable power storage, the <link=Sinotai><color=#0080FFFF>Sinotai</color></link> \'Dianzi\' station battery is the heart of most <link=Stationeers><color=#0080FFFF>Stationeer</color></link> bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: \'Dianzi cooks, but it also frys.\' \n<size=120%><b>POWER OUTPUT</b></size>\nAble to store up to 3600000W of power, there are no practical limits to its throughput, hence it is wise to use <link=ThingItemCableCoilHeavy><color=green>Cable Coil (Heavy)</color></link>. Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an <link=ThingStructureAreaPowerControl><color=green>Area Power Control</color></link> and <link=ThingStructureTransformer><color=green>Transformer (Large)</color></link>."
.into(),
name: "Station Battery".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge,
MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PowerPotential,
MemoryAccess::Read), (LogicType::PowerActual, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1945930022i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBatteryCharger".into(),
prefab_hash: 1945930022i32,
desc: "The 5-slot <link=Xigo><color=#0080FFFF>Xigo</color></link> battery charger fits the <link=ThingItemBatteryCell><color=green>Battery Cell (Small)</color></link>, <link=ThingItemBatteryCellLarge><color=green>Battery Cell (Large)</color></link> and <link=ThingItemBatteryCellNuclear><color=green>Battery Cell (Nuclear)</color></link>, providing up to 500W to any connected cell. Note: the older design means this device has minor power draw (10W) even when not charging."
.into(),
name: "Battery Cell Charger".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Battery".into(), typ : Class::Battery }, SlotInfo { name :
"Battery".into(), typ : Class::Battery }, SlotInfo { name : "Battery"
.into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), typ
: Class::Battery }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-761772413i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBatteryChargerSmall".into(),
prefab_hash: -761772413i32,
desc: "".into(),
name: "Battery Charger Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo {
name : "Battery".into(), typ : Class::Battery }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1388288459i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBatteryLarge".into(),
prefab_hash: -1388288459i32,
desc: "Providing even better large-scale, reliable power storage than the {THING;StructureBattery}, the <link=Sinotai><color=#0080FFFF>Sinotai</color></link> \'Da Dianchi\' large station battery is the heart of most <link=Stationeers><color=#0080FFFF>Stationeer</color></link> bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: \'Dianzi cooks, but it also frys.\' \n<size=120%><b>POWER OUTPUT</b></size>\nAble to store up to 9000001 watts of power, there are no practical limits to its throughput, hence it is wise to use <link=ThingItemCableCoilHeavy><color=green>Cable Coil (Heavy)</color></link>. Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an <link=ThingStructureAreaPowerControl><color=green>Area Power Control</color></link> and <link=ThingStructureTransformer><color=green>Transformer (Large)</color></link>. "
.into(),
name: "Station Battery (Large)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge,
MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PowerPotential,
MemoryAccess::Read), (LogicType::PowerActual, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1125305264i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBatteryMedium".into(),
prefab_hash: -1125305264i32,
desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full"
.into(),
name: "Battery (Medium)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::Read), (LogicType::Charge, MemoryAccess::Read),
(LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::PowerPotential, MemoryAccess::Read),
(LogicType::PowerActual, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2123455080i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBatterySmall".into(),
prefab_hash: -2123455080i32,
desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full"
.into(),
name: "Auxiliary Rocket Battery ".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::Read), (LogicType::Charge, MemoryAccess::Read),
(LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::PowerPotential, MemoryAccess::Read),
(LogicType::PowerActual, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Empty".into()), (1u32, "Critical".into()), (2u32,
"VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium".into()),
(5u32, "High".into()), (6u32, "Full".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-188177083i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBeacon".into(),
prefab_hash: -188177083i32,
desc: "".into(),
name: "Beacon".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: true,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2042448192i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBench".into(),
prefab_hash: -2042448192i32,
desc: "When it\'s time to sit, nothing supports you like a bench. This bench is powered, so you can use appliances like the <link=ThingApplianceMicrowave><color=green>Microwave</color></link>."
.into(),
name: "Powered Bench".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance },
SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
406745009i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBench1".into(),
prefab_hash: 406745009i32,
desc: "".into(),
name: "Bench (Counter Style)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance },
SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2127086069i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBench2".into(),
prefab_hash: -2127086069i32,
desc: "".into(),
name: "Bench (High Tech Style)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance },
SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-164622691i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBench3".into(),
prefab_hash: -164622691i32,
desc: "".into(),
name: "Bench (Frame Style)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance },
SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1750375230i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBench4".into(),
prefab_hash: 1750375230i32,
desc: "".into(),
name: "Bench (Workbench Style)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::On, MemoryAccess::ReadWrite),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance },
SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
337416191i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBlastDoor".into(),
prefab_hash: 337416191i32,
desc: "Airtight and almost undamageable, the original \'Millmar\' series of blast door was designed by off-world mining giant <link=Recurso><color=#0080FFFF>Recurso</color></link> to protect asteroid-mining facilities from nuclear-incident-level explosive decompression.\nShort of a pocket-sized singularity blinking into the local space-time frame, there is effectively no limit to the pressure these blast doors can contain - ideal for constructing airlocks in pressure-sensitive environments."
.into(),
name: "Blast Door".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
697908419i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureBlockBed".into(),
prefab_hash: 697908419i32,
desc: "Description coming.".into(),
name: "Block Bed".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
378084505i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureBlocker".into(),
prefab_hash: 378084505i32,
desc: "".into(),
name: "Blocker".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1036015121i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableAnalysizer".into(),
prefab_hash: 1036015121i32,
desc: "".into(),
name: "Cable Analyzer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PowerPotential, MemoryAccess::Read),
(LogicType::PowerActual, MemoryAccess::Read),
(LogicType::PowerRequired, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-889269388i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCorner".into(),
prefab_hash: -889269388i32,
desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of <link=Stationeers><color=#0080FFFF>Stationeer</color></link> life - so essential, the <link=ODA><color=#0080FFFF>ODA</color></link> designated it an official <link=ToolPage><color=#0080FFFF>\'tool\'</color></link> during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use <link=ThingItemCableCoilHeavy><color=green>Cable Coil (Heavy)</color></link>."
.into(),
name: "Cable (Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
980469101i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCorner3".into(),
prefab_hash: 980469101i32,
desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of <link=Stationeers><color=#0080FFFF>Stationeer</color></link> life - so essential, the <link=ODA><color=#0080FFFF>ODA</color></link> designated it an official <link=ToolPage><color=#0080FFFF>\'tool\'</color></link> during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use <link=ThingItemCableCoilHeavy><color=green>Cable Coil (Heavy)</color></link>."
.into(),
name: "Cable (3-Way Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
318437449i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCorner3Burnt".into(),
prefab_hash: 318437449i32,
desc: "".into(),
name: "Burnt Cable (3-Way Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2393826i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCorner3HBurnt".into(),
prefab_hash: 2393826i32,
desc: "<N:EN:StructureCableCorner3HBurnt>".into(),
name: "<N:EN:StructureCableCorner3HBurnt>".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1542172466i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCorner4".into(),
prefab_hash: -1542172466i32,
desc: "".into(),
name: "Cable (4-Way Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
268421361i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCorner4Burnt".into(),
prefab_hash: 268421361i32,
desc: "".into(),
name: "Burnt Cable (4-Way Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-981223316i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCorner4HBurnt".into(),
prefab_hash: -981223316i32,
desc: "".into(),
name: "Burnt Heavy Cable (4-Way Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-177220914i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCornerBurnt".into(),
prefab_hash: -177220914i32,
desc: "".into(),
name: "Burnt Cable (Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-39359015i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCornerH".into(),
prefab_hash: -39359015i32,
desc: "".into(),
name: "Heavy Cable (Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1843379322i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCornerH3".into(),
prefab_hash: -1843379322i32,
desc: "".into(),
name: "Heavy Cable (3-Way Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
205837861i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCornerH4".into(),
prefab_hash: 205837861i32,
desc: "".into(),
name: "Heavy Cable (4-Way Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1931412811i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableCornerHBurnt".into(),
prefab_hash: 1931412811i32,
desc: "".into(),
name: "Burnt Cable (Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
281380789i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableFuse100k".into(),
prefab_hash: 281380789i32,
desc: "".into(),
name: "Fuse (100kW)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1103727120i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableFuse1k".into(),
prefab_hash: -1103727120i32,
desc: "".into(),
name: "Fuse (1kW)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-349716617i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableFuse50k".into(),
prefab_hash: -349716617i32,
desc: "".into(),
name: "Fuse (50kW)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-631590668i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableFuse5k".into(),
prefab_hash: -631590668i32,
desc: "".into(),
name: "Fuse (5kW)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-175342021i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunction".into(),
prefab_hash: -175342021i32,
desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of <link=Stationeers><color=#0080FFFF>Stationeer</color></link> life - so much so, the <link=ODA><color=#0080FFFF>ODA</color></link> designated it an official <link=ToolPage><color=#0080FFFF>\'tool\'</color></link> during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use <link=ThingItemCableCoilHeavy><color=green>Cable Coil (Heavy)</color></link>."
.into(),
name: "Cable (Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1112047202i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunction4".into(),
prefab_hash: 1112047202i32,
desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of <link=Stationeers><color=#0080FFFF>Stationeer</color></link> life - so much so, the <link=ODA><color=#0080FFFF>ODA</color></link> designated it an official <link=ToolPage><color=#0080FFFF>\'tool\'</color></link> during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use <link=ThingItemCableCoilHeavy><color=green>Cable Coil (Heavy)</color></link>."
.into(),
name: "Cable (4-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1756896811i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunction4Burnt".into(),
prefab_hash: -1756896811i32,
desc: "".into(),
name: "Burnt Cable (4-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-115809132i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunction4HBurnt".into(),
prefab_hash: -115809132i32,
desc: "".into(),
name: "Burnt Cable (4-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
894390004i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunction5".into(),
prefab_hash: 894390004i32,
desc: "".into(),
name: "Cable (5-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1545286256i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunction5Burnt".into(),
prefab_hash: 1545286256i32,
desc: "".into(),
name: "Burnt Cable (5-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1404690610i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunction6".into(),
prefab_hash: -1404690610i32,
desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of <link=Stationeers><color=#0080FFFF>Stationeer</color></link> duty - so much so, the <link=ODA><color=#0080FFFF>ODA</color></link> designated it an official <link=ToolPage><color=#0080FFFF>\'tool\'</color></link> during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use <link=ThingItemCableCoilHeavy><color=green>Cable Coil (Heavy)</color></link>."
.into(),
name: "Cable (6-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-628145954i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunction6Burnt".into(),
prefab_hash: -628145954i32,
desc: "".into(),
name: "Burnt Cable (6-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1854404029i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunction6HBurnt".into(),
prefab_hash: 1854404029i32,
desc: "".into(),
name: "Burnt Cable (6-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1620686196i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunctionBurnt".into(),
prefab_hash: -1620686196i32,
desc: "".into(),
name: "Burnt Cable (Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
469451637i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunctionH".into(),
prefab_hash: 469451637i32,
desc: "".into(),
name: "Heavy Cable (3-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-742234680i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunctionH4".into(),
prefab_hash: -742234680i32,
desc: "".into(),
name: "Heavy Cable (4-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1530571426i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunctionH5".into(),
prefab_hash: -1530571426i32,
desc: "".into(),
name: "Heavy Cable (5-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1701593300i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunctionH5Burnt".into(),
prefab_hash: 1701593300i32,
desc: "".into(),
name: "Burnt Heavy Cable (5-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1036780772i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunctionH6".into(),
prefab_hash: 1036780772i32,
desc: "".into(),
name: "Heavy Cable (6-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-341365649i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableJunctionHBurnt".into(),
prefab_hash: -341365649i32,
desc: "".into(),
name: "Burnt Cable (Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
605357050i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableStraight".into(),
prefab_hash: 605357050i32,
desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of <link=Stationeers><color=#0080FFFF>Stationeer</color></link> life - so much so, the <link=ODA><color=#0080FFFF>ODA</color></link> designated it an official <link=ToolPage><color=#0080FFFF>\'tool\'</color></link>.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use <link=ThingItemCableCoilHeavy><color=green>Cable Coil (Heavy)</color></link>."
.into(),
name: "Cable (Straight)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1196981113i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableStraightBurnt".into(),
prefab_hash: -1196981113i32,
desc: "".into(),
name: "Burnt Cable (Straight)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-146200530i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableStraightH".into(),
prefab_hash: -146200530i32,
desc: "".into(),
name: "Heavy Cable (Straight)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2085762089i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCableStraightHBurnt".into(),
prefab_hash: 2085762089i32,
desc: "".into(),
name: "Burnt Cable (Straight)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-342072665i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCamera".into(),
prefab_hash: -342072665i32,
desc: "Nothing says \'I care\' like a security camera that\'s been linked a <link=ThingStructureMotionSensor><color=green>Motion Sensor</color></link> and a <link=ThingStructureConsole><color=green>Console</color></link> fitted with a <link=ThingCircuitboardCameraDisplay><color=green>Camera Display</color></link>.\nBe there, even when you\'re not."
.into(),
name: "Camera".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1385712131i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCapsuleTankGas".into(),
prefab_hash: -1385712131i32,
desc: "".into(),
name: "Gas Capsule Tank Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1415396263i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCapsuleTankLiquid".into(),
prefab_hash: 1415396263i32,
desc: "".into(),
name: "Liquid Capsule Tank Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1151864003i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCargoStorageMedium".into(),
prefab_hash: 1151864003i32,
desc: "".into(),
name: "Cargo Storage (Medium)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![]
.into_iter().collect()), (4u32, vec![] .into_iter().collect()),
(5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter()
.collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![]
.into_iter().collect()), (9u32, vec![] .into_iter().collect()),
(10u32, vec![] .into_iter().collect()), (11u32, vec![] .into_iter()
.collect()), (12u32, vec![] .into_iter().collect()), (13u32, vec![]
.into_iter().collect()), (14u32, vec![] .into_iter().collect()),
(15u32, vec![] .into_iter().collect()), (16u32, vec![] .into_iter()
.collect()), (17u32, vec![] .into_iter().collect()), (18u32, vec![]
.into_iter().collect()), (19u32, vec![] .into_iter().collect()),
(20u32, vec![] .into_iter().collect()), (21u32, vec![] .into_iter()
.collect()), (22u32, vec![] .into_iter().collect()), (23u32, vec![]
.into_iter().collect()), (24u32, vec![] .into_iter().collect()),
(25u32, vec![] .into_iter().collect()), (26u32, vec![] .into_iter()
.collect()), (27u32, vec![] .into_iter().collect()), (28u32, vec![]
.into_iter().collect()), (29u32, vec![] .into_iter().collect()),
(30u32, vec![] .into_iter().collect()), (31u32, vec![] .into_iter()
.collect()), (32u32, vec![] .into_iter().collect()), (33u32, vec![]
.into_iter().collect()), (34u32, vec![] .into_iter().collect()),
(35u32, vec![] .into_iter().collect()), (36u32, vec![] .into_iter()
.collect()), (37u32, vec![] .into_iter().collect()), (38u32, vec![]
.into_iter().collect()), (39u32, vec![] .into_iter().collect()),
(40u32, vec![] .into_iter().collect()), (41u32, vec![] .into_iter()
.collect()), (42u32, vec![] .into_iter().collect()), (43u32, vec![]
.into_iter().collect()), (44u32, vec![] .into_iter().collect()),
(45u32, vec![] .into_iter().collect()), (46u32, vec![] .into_iter()
.collect()), (47u32, vec![] .into_iter().collect()), (48u32, vec![]
.into_iter().collect()), (49u32, vec![] .into_iter().collect()),
(50u32, vec![] .into_iter().collect()), (51u32, vec![] .into_iter()
.collect()), (52u32, vec![] .into_iter().collect()), (53u32, vec![]
.into_iter().collect()), (54u32, vec![] .into_iter().collect()),
(55u32, vec![] .into_iter().collect()), (56u32, vec![] .into_iter()
.collect()), (57u32, vec![] .into_iter().collect()), (58u32, vec![]
.into_iter().collect()), (59u32, vec![] .into_iter().collect()),
(60u32, vec![] .into_iter().collect()), (61u32, vec![] .into_iter()
.collect()), (62u32, vec![] .into_iter().collect()), (63u32, vec![]
.into_iter().collect()), (64u32, vec![] .into_iter().collect()),
(65u32, vec![] .into_iter().collect()), (66u32, vec![] .into_iter()
.collect()), (67u32, vec![] .into_iter().collect()), (68u32, vec![]
.into_iter().collect()), (69u32, vec![] .into_iter().collect()),
(70u32, vec![] .into_iter().collect()), (71u32, vec![] .into_iter()
.collect()), (72u32, vec![] .into_iter().collect()), (73u32, vec![]
.into_iter().collect()), (74u32, vec![] .into_iter().collect()),
(75u32, vec![] .into_iter().collect()), (76u32, vec![] .into_iter()
.collect()), (77u32, vec![] .into_iter().collect()), (78u32, vec![]
.into_iter().collect()), (79u32, vec![] .into_iter().collect()),
(80u32, vec![] .into_iter().collect()), (81u32, vec![] .into_iter()
.collect()), (82u32, vec![] .into_iter().collect()), (83u32, vec![]
.into_iter().collect()), (84u32, vec![] .into_iter().collect()),
(85u32, vec![] .into_iter().collect()), (86u32, vec![] .into_iter()
.collect()), (87u32, vec![] .into_iter().collect()), (88u32, vec![]
.into_iter().collect()), (89u32, vec![] .into_iter().collect()),
(90u32, vec![] .into_iter().collect()), (91u32, vec![] .into_iter()
.collect()), (92u32, vec![] .into_iter().collect()), (93u32, vec![]
.into_iter().collect()), (94u32, vec![] .into_iter().collect()),
(95u32, vec![] .into_iter().collect()), (96u32, vec![] .into_iter()
.collect()), (97u32, vec![] .into_iter().collect()), (98u32, vec![]
.into_iter().collect()), (99u32, vec![] .into_iter().collect()),
(100u32, vec![] .into_iter().collect()), (101u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }, SlotInfo { name : "Storage".into(),
typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1493672123i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCargoStorageSmall".into(),
prefab_hash: -1493672123i32,
desc: "".into(),
name: "Cargo Storage (Small)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (6u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (7u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (8u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (9u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (10u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (11u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (12u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (13u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (14u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (15u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (16u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (17u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (18u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (19u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (20u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (21u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (22u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (23u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (24u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (25u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (26u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (27u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (28u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (29u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (30u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (31u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (32u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (33u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (34u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (35u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (36u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (37u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (38u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (39u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (40u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (41u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (42u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (43u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (44u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (45u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (46u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (47u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (48u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (49u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (50u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (51u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }, SlotInfo { name : "Storage".into(),
typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
690945935i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCentrifuge".into(),
prefab_hash: 690945935i32,
desc: "If a <link=ThingStructureRecycler><color=green>Recycler</color></link> or unbalanced <link=ThingStructureFurnace><color=green>Furnace</color></link> outputs <link=ReagentPage><color=#0080FFFF>reagent</color></link> mixture rather than the desired <link=IngotPage><color=#0080FFFF>ingots</color></link>, a centrifuge allows you to reclaim the raw <link=OrePage><color=#0080FFFF>ore</color></link>. \n It also refines <link=ThingItemDirtyOre><color=green>Dirty Ore</color></link> produced from the <link=ThingStructureDeepMiner><color=green>Deep Miner</color></link> and <link=ThingItemSpaceOre><color=green>Dirty Ore</color></link> produced from the <link=ThingStructureRocketMiner><color=green>Rocket Miner</color></link>. \n Its bigger brother <link=ThingStructureCombustionCentrifuge><color=green>Combustion Centrifuge</color></link> can be used to process items significantly faster. Items processed by the centrifuge will be de-gassed. \n If openned while powered on, the centrifuge will enter an errored state and reduce its rpm to 0 and then export any items."
.into(),
name: "Centrifuge".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Reagents, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
}
.into(),
);
map.insert(
1167659360i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChair".into(),
prefab_hash: 1167659360i32,
desc: "One of the universe\'s many chairs, optimized for bipeds with somewhere between zero and two upper limbs."
.into(),
name: "Chair".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1944858936i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChairBacklessDouble".into(),
prefab_hash: 1944858936i32,
desc: "".into(),
name: "Chair (Backless Double)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1672275150i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChairBacklessSingle".into(),
prefab_hash: 1672275150i32,
desc: "".into(),
name: "Chair (Backless Single)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-367720198i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChairBoothCornerLeft".into(),
prefab_hash: -367720198i32,
desc: "".into(),
name: "Chair (Booth Corner Left)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1640720378i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChairBoothMiddle".into(),
prefab_hash: 1640720378i32,
desc: "".into(),
name: "Chair (Booth Middle)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1152812099i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChairRectangleDouble".into(),
prefab_hash: -1152812099i32,
desc: "".into(),
name: "Chair (Rectangle Double)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1425428917i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChairRectangleSingle".into(),
prefab_hash: -1425428917i32,
desc: "".into(),
name: "Chair (Rectangle Single)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1245724402i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChairThickDouble".into(),
prefab_hash: -1245724402i32,
desc: "".into(),
name: "Chair (Thick Double)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1510009608i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChairThickSingle".into(),
prefab_hash: -1510009608i32,
desc: "".into(),
name: "Chair (Thick Single)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-850484480i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteBin".into(),
prefab_hash: -850484480i32,
desc: "The <link=Stationeers><color=#0080FFFF>Stationeer\'s</color></link> goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nLike most <link=Recurso><color=#0080FFFF>Recurso</color></link>-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 <link=LogicUnitPage><color=#0080FFFF>logic</color></link> to operate automatically, although full automation requires the use items such as a <link=ThingStructureSDBHopper><color=green>SDB Hopper</color></link>."
.into(),
name: "Chute Bin".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Input".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1360330136i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteCorner".into(),
prefab_hash: 1360330136i32,
desc: "Chutes act as pipes for items. Use them to connect various <link=ImportExportPage><color=#0080FFFF>import/export</color></link> equipment together such as the <link=ThingStructureVendingMachine><color=green>Vending Machine</color></link> and printers like the <link=ThingStructureAutolathe><color=green>Autolathe</color></link>.\nThe aim for any <link=Stationeers><color=#0080FFFF>Stationeer</color></link> is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute corners are fundamental components of chute networks, which allow the transport of items between machines with <link=ImportExportPage><color=#0080FFFF>import/export</color></link> slots, such as the <link=ThingStructureFurnace><color=green>Furnace</color></link> and other automatable structures."
.into(),
name: "Chute (Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-810874728i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteDigitalFlipFlopSplitterLeft".into(),
prefab_hash: -810874728i32,
desc: "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output."
.into(),
name: "Chute Digital Flip Flop Splitter Left".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Quantity,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::SettingOutput, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Output2 }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
163728359i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteDigitalFlipFlopSplitterRight".into(),
prefab_hash: 163728359i32,
desc: "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output."
.into(),
name: "Chute Digital Flip Flop Splitter Right".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Quantity,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::SettingOutput, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Output2 }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
648608238i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteDigitalValveLeft".into(),
prefab_hash: 648608238i32,
desc: "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial."
.into(),
name: "Chute Digital Valve Left".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Quantity,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1337091041i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteDigitalValveRight".into(),
prefab_hash: -1337091041i32,
desc: "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial."
.into(),
name: "Chute Digital Valve Right".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Quantity,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1446854725i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteFlipFlopSplitter".into(),
prefab_hash: -1446854725i32,
desc: "A chute that toggles between two outputs".into(),
name: "Chute Flip Flop Splitter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1469588766i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteInlet".into(),
prefab_hash: -1469588766i32,
desc: "The aim for any <link=Stationeers><color=#0080FFFF>Stationeer</color></link> is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute inlet is an aperture by which items can be introduced to <link=ImportExportPage><color=#0080FFFF>import/export</color></link> networks. Note that its origins in zero-gravity mining means chute inlets are unpowered and permanently open, rather than interactable, allowing objects to be thrown in. They can be connected to <link=LogicUnitPage><color=#0080FFFF>logic</color></link> systems to monitor throughput."
.into(),
name: "Chute Inlet".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::ClearMemory,
MemoryAccess::Write), (LogicType::ImportCount, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Data, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-611232514i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteJunction".into(),
prefab_hash: -611232514i32,
desc: "The aim for any <link=Stationeers><color=#0080FFFF>Stationeer</color></link> is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute junctions are fundamental components of chute networks, allowing merging or splitting of these networks. When combined with a programmed <link=ThingStructureSorter><color=green>Sorter</color></link>, items can be sent down different paths to various machines with <link=ImportExportPage><color=#0080FFFF>import/export</color></link> slots."
.into(),
name: "Chute (Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1022714809i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteOutlet".into(),
prefab_hash: -1022714809i32,
desc: "The aim for any <link=Stationeers><color=#0080FFFF>Stationeer</color></link> is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute outlet is an aperture for exiting items from <link=ImportExportPage><color=#0080FFFF>import/export</color></link> networks. Note that the outlet\'s origins in zero-gravity mining means they are permanently open, rather than interactable, but can be connected to <link=LogicUnitPage><color=#0080FFFF>logic</color></link> systems to monitor throughput."
.into(),
name: "Chute Outlet".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::ClearMemory,
MemoryAccess::Write), (LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
225377225i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteOverflow".into(),
prefab_hash: 225377225i32,
desc: "The overflow chute will direct materials to its overflow port when the thing connected to its default port is already occupied."
.into(),
name: "Chute Overflow".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
168307007i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteStraight".into(),
prefab_hash: 168307007i32,
desc: "Chutes act as pipes for items. Use them to connect various <link=ImportExportPage><color=#0080FFFF>import/export</color></link> equipment together such as the <link=ThingStructureVendingMachine><color=green>Vending Machine</color></link> and printers like the <link=ThingStructureAutolathe><color=green>Autolathe</color></link>.\nThe aim for any <link=Stationeers><color=#0080FFFF>Stationeer</color></link> is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChutes are fundamental components of chute networks, which allow the transport of items between any machine or device with an <link=ImportExportPage><color=#0080FFFF>import/export</color></link> slot."
.into(),
name: "Chute (Straight)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1918892177i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteUmbilicalFemale".into(),
prefab_hash: -1918892177i32,
desc: "".into(),
name: "Umbilical Socket (Chute)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-659093969i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteUmbilicalFemaleSide".into(),
prefab_hash: -659093969i32,
desc: "".into(),
name: "Umbilical Socket Angle (Chute)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-958884053i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteUmbilicalMale".into(),
prefab_hash: -958884053i32,
desc: "0.Left\n1.Center\n2.Right".into(),
name: "Umbilical (Chute)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
434875271i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteValve".into(),
prefab_hash: 434875271i32,
desc: "The Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute."
.into(),
name: "Chute Valve".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-607241919i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureChuteWindow".into(),
prefab_hash: -607241919i32,
desc: "Chute\'s with windows let you see what\'s passing through your <link=ImportExportPage><color=#0080FFFF>import/export</color></link> network. But be warned, they are not insulated as other chutes are. Ices will melt."
.into(),
name: "Chute (Window)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Transport Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-128473777i32,
StructureCircuitHolderTemplate {
templateType: "StructureCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "StructureCircuitHousing".into(),
prefab_hash: -128473777i32,
desc: "".into(),
name: "IC Housing".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::LineNumber, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::LineNumber, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Programmable Chip".into(), typ :
Class::ProgrammableChip }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: Some(6u32),
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1238905683i32,
StructureCircuitHolderTemplate {
templateType: "StructureCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "StructureCombustionCentrifuge".into(),
prefab_hash: 1238905683i32,
desc: "The Combustion Centrifuge is a gas powered version of the <link=ThingStructureCentrifuge><color=green>Centrifuge</color></link>. If a <link=ThingStructureRecycler><color=green>Recycler</color></link> or unbalanced <link=ThingStructureFurnace><color=green>Furnace</color></link> outputs <link=ReagentPage><color=#0080FFFF>reagent</color></link> mixture rather than the desired <link=IngotPage><color=#0080FFFF>ingots</color></link>, a centrifuge allows you to reclaim the raw <link=OrePage><color=#0080FFFF>ore</color></link>.\n It also refines <link=ThingItemDirtyOre><color=green>Dirty Ore</color></link> produced from the <link=ThingStructureDeepMiner><color=green>Deep Miner</color></link> and <link=ThingItemSpaceOre><color=green>Dirty Ore</color></link> produced from the <link=ThingStructureRocketMiner><color=green>Rocket Miner</color></link>. A combustible fuel mix should be supplied to the gas input, and waste gasses should be vented from the output. \n The machine\'s RPMs must be controlled via the throttle and combustion limiter levers. If the Combustion Centrifuge gains, or loses, RPMs too fast it will experience stress, and eventually grind to a halt. Higher RPMs directly result in faster processing speeds. \n The throttle lever controls the amount of fuel being pulled into the machine, increasing the temperature inside the engine, and leading to an increase in RPM. The limiter lever influences the speed of the combustion, and how much uncombusted gas is in the exhaust. \n Ejecting ore from the Combustion Centrifuge while it is at high RPMs will result in additional stress build up. If turned off while not stressed, the machine will automatically start to brake, and reduce RPMs in a controlled manner.\n\t "
.into(),
name: "Combustion Centrifuge".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.001f32,
radiation_factor: 0.001f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect()), (2u32, vec![] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Reagents, MemoryAccess::Read), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::PressureInput, MemoryAccess::Read),
(LogicType::TemperatureInput, MemoryAccess::Read),
(LogicType::RatioOxygenInput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioNitrogenInput, MemoryAccess::Read),
(LogicType::RatioPollutantInput, MemoryAccess::Read),
(LogicType::RatioVolatilesInput, MemoryAccess::Read),
(LogicType::RatioWaterInput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideInput, MemoryAccess::Read),
(LogicType::TotalMolesInput, MemoryAccess::Read),
(LogicType::PressureOutput, MemoryAccess::Read),
(LogicType::TemperatureOutput, MemoryAccess::Read),
(LogicType::RatioOxygenOutput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioPollutantOutput, MemoryAccess::Read),
(LogicType::RatioVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioWaterOutput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideOutput, MemoryAccess::Read),
(LogicType::TotalMolesOutput, MemoryAccess::Read),
(LogicType::CombustionInput, MemoryAccess::Read),
(LogicType::CombustionOutput, MemoryAccess::Read),
(LogicType::CombustionLimiter, MemoryAccess::ReadWrite),
(LogicType::Throttle, MemoryAccess::ReadWrite), (LogicType::Rpm,
MemoryAccess::Read), (LogicType::Stress, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenInput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioSteamInput, MemoryAccess::Read),
(LogicType::RatioSteamOutput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantInput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }, SlotInfo { name :
"Programmable Chip".into(), typ : Class::ProgrammableChip }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: Some(2u32),
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
}
.into(),
);
map.insert(
-1513030150i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingAngled".into(),
prefab_hash: -1513030150i32,
desc: "".into(),
name: "Composite Cladding (Angled)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-69685069i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingAngledCorner".into(),
prefab_hash: -69685069i32,
desc: "".into(),
name: "Composite Cladding (Angled Corner)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1841871763i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingAngledCornerInner".into(),
prefab_hash: -1841871763i32,
desc: "".into(),
name: "Composite Cladding (Angled Corner Inner)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1417912632i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingAngledCornerInnerLong".into(),
prefab_hash: -1417912632i32,
desc: "".into(),
name: "Composite Cladding (Angled Corner Inner Long)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
947705066i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingAngledCornerInnerLongL".into(),
prefab_hash: 947705066i32,
desc: "".into(),
name: "Composite Cladding (Angled Corner Inner Long L)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1032590967i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingAngledCornerInnerLongR".into(),
prefab_hash: -1032590967i32,
desc: "".into(),
name: "Composite Cladding (Angled Corner Inner Long R)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
850558385i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingAngledCornerLong".into(),
prefab_hash: 850558385i32,
desc: "".into(),
name: "Composite Cladding (Long Angled Corner)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-348918222i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingAngledCornerLongR".into(),
prefab_hash: -348918222i32,
desc: "".into(),
name: "Composite Cladding (Long Angled Mirrored Corner)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-387546514i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingAngledLong".into(),
prefab_hash: -387546514i32,
desc: "".into(),
name: "Composite Cladding (Long Angled)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
212919006i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingCylindrical".into(),
prefab_hash: 212919006i32,
desc: "".into(),
name: "Composite Cladding (Cylindrical)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1077151132i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingCylindricalPanel".into(),
prefab_hash: 1077151132i32,
desc: "".into(),
name: "Composite Cladding (Cylindrical Panel)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1997436771i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingPanel".into(),
prefab_hash: 1997436771i32,
desc: "".into(),
name: "Composite Cladding (Panel)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-259357734i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingRounded".into(),
prefab_hash: -259357734i32,
desc: "".into(),
name: "Composite Cladding (Rounded)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1951525046i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingRoundedCorner".into(),
prefab_hash: 1951525046i32,
desc: "".into(),
name: "Composite Cladding (Rounded Corner)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
110184667i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingRoundedCornerInner".into(),
prefab_hash: 110184667i32,
desc: "".into(),
name: "Composite Cladding (Rounded Corner Inner)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
139107321i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingSpherical".into(),
prefab_hash: 139107321i32,
desc: "".into(),
name: "Composite Cladding (Spherical)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
534213209i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingSphericalCap".into(),
prefab_hash: 534213209i32,
desc: "".into(),
name: "Composite Cladding (Spherical Cap)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1751355139i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeCladdingSphericalCorner".into(),
prefab_hash: 1751355139i32,
desc: "".into(),
name: "Composite Cladding (Spherical Corner)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-793837322i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeDoor".into(),
prefab_hash: -793837322i32,
desc: "<link=Recurso><color=#0080FFFF>Recurso\'s</color></link> composite doors are rated to 300kPa, which is more than sufficient for most purposes they were designed for. However, steep pressure differentials are not your friend."
.into(),
name: "Composite Door".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
324868581i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeFloorGrating".into(),
prefab_hash: 324868581i32,
desc: "While aesthetics rank low on the ladder of <link=Stationeers><color=#0080FFFF>Stationeer</color></link> concerns, composite gratings allow the concealment of unsightly cables on floors, walls and ceilings."
.into(),
name: "Composite Floor Grating".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-895027741i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeFloorGrating2".into(),
prefab_hash: -895027741i32,
desc: "".into(),
name: "Composite Floor Grating (Type 2)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1113471627i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeFloorGrating3".into(),
prefab_hash: -1113471627i32,
desc: "".into(),
name: "Composite Floor Grating (Type 3)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
600133846i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeFloorGrating4".into(),
prefab_hash: 600133846i32,
desc: "".into(),
name: "Composite Floor Grating (Type 4)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2109695912i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeFloorGratingOpen".into(),
prefab_hash: 2109695912i32,
desc: "".into(),
name: "Composite Floor Grating Open".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
882307910i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeFloorGratingOpenRotated".into(),
prefab_hash: 882307910i32,
desc: "".into(),
name: "Composite Floor Grating Open Rotated".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1237302061i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeWall".into(),
prefab_hash: 1237302061i32,
desc: "Air-tight and resistant to extreme temperatures, composite walls favor form over function, coming in a range of slightly different, functionally identical varieties."
.into(),
name: "Composite Wall (Type 1)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
718343384i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeWall02".into(),
prefab_hash: 718343384i32,
desc: "".into(),
name: "Composite Wall (Type 2)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1574321230i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeWall03".into(),
prefab_hash: 1574321230i32,
desc: "".into(),
name: "Composite Wall (Type 3)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1011701267i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeWall04".into(),
prefab_hash: -1011701267i32,
desc: "".into(),
name: "Composite Wall (Type 4)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2060571986i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeWindow".into(),
prefab_hash: -2060571986i32,
desc: "Air-tight and resistant to extreme temperatures, composite walls come in several charming, near identical varieties - reflecting their designer\'s focus on form over function."
.into(),
name: "Composite Window".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-688284639i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureCompositeWindowIron".into(),
prefab_hash: -688284639i32,
desc: "".into(),
name: "Iron Window".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-626563514i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureComputer".into(),
prefab_hash: -626563514i32,
desc: "In some ways a relic, the \'Chonk R1\' was designed by severely conflicted <link=Norsec><color=#0080FFFF>Norsec</color></link> technicians, who needed a unit that could operate with a wide range of <link=LogicUnitPage><color=#0080FFFF>motherboards</color></link>, 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- <link=ThingMotherboardLogic><color=green>Logic Motherboard</color></link>\n- <link=ThingMotherboardManufacturing><color=green>Manufacturing Motherboard</color></link>\n- <link=ThingMotherboardSorter><color=green>Sorter Motherboard</color></link>\n- <link=ThingMotherboardComms><color=green>Communications Motherboard</color></link>\n- <link=ThingMotherboardProgrammableChip><color=green>IC Editor Motherboard</color></link>"
.into(),
name: "Computer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect()), (2u32, vec![] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk }, SlotInfo {
name : "Data Disk".into(), typ : Class::DataDisk }, SlotInfo { name :
"Motherboard".into(), typ : Class::Motherboard }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1420719315i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCondensationChamber".into(),
prefab_hash: 1420719315i32,
desc: "A device for safely condensing gasses into liquids. Liquids and Gasses will both exist safely inside the device. The Chamber will pressurise using its in-built pressure regulator to the target set by the setting wheel.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Condensation Chamber.\n Paired with <link=ThingStructureEvaporationChamber><color=green>Evaporation Chamber</color></link> Stationeers can exploit the phase change properties of gases to build a DIY air conditioner."
.into(),
name: "Condensation Chamber".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.001f32,
radiation_factor: 0.000050000002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input2 }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::PipeLiquid, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-965741795i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCondensationValve".into(),
prefab_hash: -965741795i32,
desc: "Allows for the removal of any liquids from a gas pipe into a liquid pipe. Only allows liquids to pass in one direction."
.into(),
name: "Condensation Valve".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
235638270i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureConsole".into(),
prefab_hash: 235638270i32,
desc: "This <link=Norsec><color=#0080FFFF>Norsec-designed</color></link> control box manages devices such as the <link=ThingStructureActiveVent><color=green>Active Vent</color></link>, <link=ThingStructurePassiveVent><color=green>Passive Vent</color></link>, <link=ThingStructureGasSensor><color=green>Gas Sensor</color></link> and <link=ThingStructureCompositeDoor><color=green>Composite Door</color></link>, depending on which <link=LogicPage><color=#0080FFFF>circuitboard</color></link> is inserted into the unit. It has a shared data/power port.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a <link=ThingItemDataDisk><color=green>Data Disk</color></link> is removed."
.into(),
name: "Console".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard },
SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-722284333i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureConsoleDual".into(),
prefab_hash: -722284333i32,
desc: "This <link=Norsec><color=#0080FFFF>Norsec-designed</color></link> control box manages devices such as the <link=ThingStructureActiveVent><color=green>Active Vent</color></link>, <link=ThingStructureGasSensor><color=green>Gas Sensor</color></link>, <link=ThingStructureCompositeDoor><color=green>Composite Door</color></link> and others, depending on which <link=LogicPage><color=#0080FFFF>circuitboard</color></link> is inserted into the unit. It has separate data and power ports.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a <link=ThingItemDataDisk><color=green>Data Disk</color></link> is removed."
.into(),
name: "Console Dual".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard },
SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-53151617i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureConsoleLED1x2".into(),
prefab_hash: -53151617i32,
desc: "0.Default\n1.Percent\n2.Power".into(),
name: "LED Display (Medium)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Default".into()), (1u32, "Percent".into()), (2u32,
"Power".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: true,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1949054743i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureConsoleLED1x3".into(),
prefab_hash: -1949054743i32,
desc: "0.Default\n1.Percent\n2.Power".into(),
name: "LED Display (Large)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Default".into()), (1u32, "Percent".into()), (2u32,
"Power".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: true,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-815193061i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureConsoleLED5".into(),
prefab_hash: -815193061i32,
desc: "0.Default\n1.Percent\n2.Power".into(),
name: "LED Display (Small)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Default".into()), (1u32, "Percent".into()), (2u32,
"Power".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: true,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
801677497i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureConsoleMonitor".into(),
prefab_hash: 801677497i32,
desc: "This <link=Norsec><color=#0080FFFF>Norsec-designed</color></link> control box manages devices such as the <link=ThingStructureActiveVent><color=green>Active Vent</color></link>, <link=ThingStructurePassiveVent><color=green>Passive Vent</color></link>, <link=ThingStructureGasSensor><color=green>Gas Sensor</color></link>, <link=ThingItemSecurityCamera><color=green>Security Camera</color></link> and <link=ThingStructureCompositeDoor><color=green>Composite Door</color></link>, depending on which <link=LogicPage><color=#0080FFFF>circuitboard</color></link> is inserted into the unit. It has a shared data/power port, and a charming sloped interface.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a <link=ThingItemDataDisk><color=green>Data Disk</color></link> is removed."
.into(),
name: "Console Monitor".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard },
SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1961153710i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureControlChair".into(),
prefab_hash: -1961153710i32,
desc: "Once, these chairs were the heart of space-going behemoths. Now, they\'re items of nostalgia built only by a handful of Stationeers with a sense of history. In other words, kitsch."
.into(),
name: "Control Chair".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::PositionX, MemoryAccess::Read), (LogicType::PositionY,
MemoryAccess::Read), (LogicType::PositionZ, MemoryAccess::Read),
(LogicType::VelocityMagnitude, MemoryAccess::Read),
(LogicType::VelocityRelativeX, MemoryAccess::Read),
(LogicType::VelocityRelativeY, MemoryAccess::Read),
(LogicType::VelocityRelativeZ, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Entity".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1968255729i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCornerLocker".into(),
prefab_hash: -1968255729i32,
desc: "".into(),
name: "Corner Locker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-733500083i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureCrateMount".into(),
prefab_hash: -733500083i32,
desc: "".into(),
name: "Container Mount".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Container Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1938254586i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCryoTube".into(),
prefab_hash: 1938254586i32,
desc: "The exact operation of the Longsleep cryotube remains a commercial secret, with <link=Norsec><color=#0080FFFF>Norsec</color></link> merely licensing the design. Able to regenerate organ damage when supplied with power and an atmosphere, the Longsleep is a minor miracle of modern medical technology."
.into(),
name: "CryoTube".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1443059329i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCryoTubeHorizontal".into(),
prefab_hash: 1443059329i32,
desc: "The horizontal variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C."
.into(),
name: "Cryo Tube Horizontal".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.005f32,
radiation_factor: 0.005f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1381321828i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureCryoTubeVertical".into(),
prefab_hash: -1381321828i32,
desc: "The vertical variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C."
.into(),
name: "Cryo Tube Vertical".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.005f32,
radiation_factor: 0.005f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1076425094i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureDaylightSensor".into(),
prefab_hash: 1076425094i32,
desc: "Daylight sensors provide data on whether the current region of your base is in sunlight, and report the exact solar angle. Note that the orientation of the sensor alters the reported solar angle, while <link=LogicPage><color=#0080FFFF>Logic</color></link> systems can be used to offset it."
.into(),
name: "Daylight Sensor".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Horizontal,
MemoryAccess::Read), (LogicType::Vertical, MemoryAccess::Read),
(LogicType::SolarAngle, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::SolarIrradiance,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Default".into()), (1u32, "Horizontal".into()), (2u32,
"Vertical".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
265720906i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureDeepMiner".into(),
prefab_hash: 265720906i32,
desc: "Drills through terrain until it hits bedrock. Once inside bedrock <link=ThingItemDirtyOre><color=green>Dirty Ore</color></link> is produced roughly every 90s"
.into(),
name: "Deep Miner".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Data, role : ConnectionRole::None }, ConnectionInfo {
typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1280984102i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureDigitalValve".into(),
prefab_hash: -1280984102i32,
desc: "The digital valve allows <link=Stationeers><color=#0080FFFF>Stationeers</color></link> to create <link=LogicPage><color=#0080FFFF>logic-controlled</color></link> valves and pipe networks."
.into(),
name: "Digital Valve".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1944485013i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureDiode".into(),
prefab_hash: 1944485013i32,
desc: "".into(),
name: "LED".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Color,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: true,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
576516101i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureDiodeSlide".into(),
prefab_hash: 576516101i32,
desc: "".into(),
name: "Diode Slide".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-137465079i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureDockPortSide".into(),
prefab_hash: -137465079i32,
desc: "".into(),
name: "Dock (Port Side)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1968371847i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureDrinkingFountain".into(),
prefab_hash: 1968371847i32,
desc: "<N:EN:StructureDrinkingFountain>".into(),
name: "<N:EN:StructureDrinkingFountain>".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1668992663i32,
StructureCircuitHolderTemplate {
templateType: "StructureCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "StructureElectrolyzer".into(),
prefab_hash: -1668992663i32,
desc: "The <link=Norsec><color=#0080FFFF>Norsec-designed</color></link> Electrolyzer splits <link=GasWater><color=#44AD83>Water</color></link> into hydrogen and <link=GasOxygen><color=#44AD83>Oxygen</color></link>. Employing unknown proprietary technology, the device uses water\'s latent heat as the energy to drive the electrosis process. If there is a downside to this near-miraculous fission, it\'s that the device is limited by the quantity of power available, which is used to maintain the temperature output. In other words, the machine works best with hot gas."
.into(),
name: "Electrolyzer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::PressureInput, MemoryAccess::Read),
(LogicType::TemperatureInput, MemoryAccess::Read),
(LogicType::RatioOxygenInput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioNitrogenInput, MemoryAccess::Read),
(LogicType::RatioPollutantInput, MemoryAccess::Read),
(LogicType::RatioVolatilesInput, MemoryAccess::Read),
(LogicType::RatioWaterInput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideInput, MemoryAccess::Read),
(LogicType::TotalMolesInput, MemoryAccess::Read),
(LogicType::PressureOutput, MemoryAccess::Read),
(LogicType::TemperatureOutput, MemoryAccess::Read),
(LogicType::RatioOxygenOutput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioPollutantOutput, MemoryAccess::Read),
(LogicType::RatioVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioWaterOutput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideOutput, MemoryAccess::Read),
(LogicType::TotalMolesOutput, MemoryAccess::Read),
(LogicType::CombustionInput, MemoryAccess::Read),
(LogicType::CombustionOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenInput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioSteamInput, MemoryAccess::Read),
(LogicType::RatioSteamOutput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantInput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Idle".into()), (1u32, "Active".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Programmable Chip".into(), typ :
Class::ProgrammableChip }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: Some(2u32),
has_activate_state: true,
has_atmosphere: true,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1307165496i32,
StructureLogicDeviceConsumerMemoryTemplate {
templateType: "StructureLogicDeviceConsumerMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureElectronicsPrinter".into(),
prefab_hash: 1307165496i32,
desc: "The electronic printer will create any <link=ElectronicPage><color=#0080FFFF>electronic</color></link> part you need. From circuit boards and electronic devices to solar panels. The choice is yours. Upgrade the device using a <link=ThingElectronicPrinterMod><color=green>Electronic Printer Mod</color></link> for additional recipes and faster processing speeds."
.into(),
name: "Electronics Printer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RecipeHash,
MemoryAccess::ReadWrite), (LogicType::CompletionRatio,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name
: "Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemAstroloyIngot".into(), "ItemConstantanIngot".into(),
"ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot"
.into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(),
"ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot"
.into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(),
"ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel"
.into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(),
"ItemWaspaloyIngot".into(), "ItemWasteIngot".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
fabricator_info: Some(FabricatorInfo {
tier: MachineTier::Undefined,
recipes: vec![
("ApplianceChemistryStation".into(), Recipe { tier :
MachineTier::TierOne, time : 45f64, energy : 1500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 1f64), ("Steel".into(), 5f64)] .into_iter().collect() }),
("ApplianceDeskLampLeft".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Iron".into(), 2f64), ("Silicon"
.into(), 1f64)] .into_iter().collect() }), ("ApplianceDeskLampRight"
.into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents : vec![("Iron"
.into(), 2f64), ("Silicon".into(), 1f64)] .into_iter().collect() }),
("ApplianceMicrowave".into(), Recipe { tier : MachineTier::TierOne,
time : 45f64, energy : 1500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 1f64),
("Iron".into(), 5f64)] .into_iter().collect() }),
("AppliancePackagingMachine".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 1f64), ("Iron".into(), 10f64)] .into_iter().collect() }),
("AppliancePaintMixer".into(), Recipe { tier : MachineTier::TierOne,
time : 45f64, energy : 1500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 1f64),
("Steel".into(), 5f64)] .into_iter().collect() }),
("AppliancePlantGeneticAnalyzer".into(), Recipe { tier :
MachineTier::TierOne, time : 45f64, energy : 4500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 1f64), ("Steel".into(), 5f64)] .into_iter().collect() }),
("AppliancePlantGeneticSplicer".into(), Recipe { tier :
MachineTier::TierOne, time : 50f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Inconel".into(), 10f64),
("Stellite".into(), 20f64)] .into_iter().collect() }),
("AppliancePlantGeneticStabilizer".into(), Recipe { tier :
MachineTier::TierOne, time : 50f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Inconel".into(), 10f64),
("Stellite".into(), 20f64)] .into_iter().collect() }),
("ApplianceReagentProcessor".into(), Recipe { tier :
MachineTier::TierOne, time : 45f64, energy : 1500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 1f64), ("Iron".into(), 5f64)] .into_iter().collect() }),
("ApplianceTabletDock".into(), Recipe { tier : MachineTier::TierOne,
time : 30f64, energy : 750f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 4i64,
reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 1f64),
("Iron".into(), 5f64), ("Silicon".into(), 1f64)] .into_iter()
.collect() }), ("AutolathePrinterMod".into(), Recipe { tier :
MachineTier::TierTwo, time : 180f64, energy : 72000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Constantan".into(), 8f64),
("Electrum".into(), 8f64), ("Solder".into(), 8f64), ("Steel".into(),
35f64)] .into_iter().collect() }), ("Battery_Wireless_cell".into(),
Recipe { tier : MachineTier::TierOne, time : 10f64, energy :
10000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 10f64), ("Gold".into(), 2f64), ("Iron".into(),
2f64)] .into_iter().collect() }), ("Battery_Wireless_cell_Big"
.into(), Recipe { tier : MachineTier::TierOne, time : 20f64, energy :
20000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 15f64), ("Gold".into(), 5f64), ("Steel"
.into(), 5f64)] .into_iter().collect() }), ("CartridgeAtmosAnalyser"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron".into(),
1f64)] .into_iter().collect() }), ("CartridgeConfiguration".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
5f64), ("Gold".into(), 5f64), ("Iron".into(), 1f64)] .into_iter()
.collect() }), ("CartridgeElectronicReader".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("CartridgeGPS".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 5f64),
("Iron".into(), 1f64)] .into_iter().collect() }),
("CartridgeMedicalAnalyser".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("CartridgeNetworkAnalyser".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("CartridgeOreScanner".into(), Recipe { tier : MachineTier::TierOne,
time : 5f64, energy : 100f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 5f64),
("Iron".into(), 1f64)] .into_iter().collect() }),
("CartridgeOreScannerColor".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Constantan".into(), 5f64),
("Electrum".into(), 5f64), ("Invar".into(), 5f64), ("Silicon".into(),
5f64)] .into_iter().collect() }), ("CartridgePlantAnalyser".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
5f64), ("Gold".into(), 5f64), ("Iron".into(), 1f64)] .into_iter()
.collect() }), ("CartridgeTracker".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("CircuitboardAdvAirlockControl".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("CircuitboardAirControl".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64)] .into_iter().collect() }),
("CircuitboardAirlockControl".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("CircuitboardDoorControl".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64)] .into_iter().collect() }), ("CircuitboardGasDisplay"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron".into(),
1f64)] .into_iter().collect() }), ("CircuitboardGraphDisplay".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
5f64), ("Gold".into(), 5f64)] .into_iter().collect() }),
("CircuitboardHashDisplay".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64)] .into_iter().collect() }), ("CircuitboardModeControl"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter()
.collect() }), ("CircuitboardPowerControl".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64)] .into_iter().collect() }), ("CircuitboardShipDisplay"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)] .into_iter()
.collect() }), ("CircuitboardSolarControl".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64)] .into_iter().collect() }), ("DynamicLight".into(),
Recipe { tier : MachineTier::TierOne, time : 20f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
2f64), ("Iron".into(), 5f64)] .into_iter().collect() }),
("ElectronicPrinterMod".into(), Recipe { tier : MachineTier::TierOne,
time : 180f64, energy : 72000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 4i64,
reagents : vec![("Constantan".into(), 8f64), ("Electrum".into(),
8f64), ("Solder".into(), 8f64), ("Steel".into(), 35f64)] .into_iter()
.collect() }), ("ItemAdvancedTablet".into(), Recipe { tier :
MachineTier::TierTwo, time : 60f64, energy : 12000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 6i64, reagents : vec![("Copper".into(), 5.5f64),
("Electrum".into(), 1f64), ("Gold".into(), 12f64), ("Iron".into(),
3f64), ("Solder".into(), 5f64), ("Steel".into(), 2f64)] .into_iter()
.collect() }), ("ItemAreaPowerControl".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Iron"
.into(), 5f64), ("Solder".into(), 3f64)] .into_iter().collect() }),
("ItemBatteryCell".into(), Recipe { tier : MachineTier::TierOne, time
: 10f64, energy : 1000f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 2f64),
("Iron".into(), 2f64)] .into_iter().collect() }),
("ItemBatteryCellLarge".into(), Recipe { tier : MachineTier::TierOne,
time : 20f64, energy : 20000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 10f64), ("Gold".into(), 5f64),
("Steel".into(), 5f64)] .into_iter().collect() }),
("ItemBatteryCellNuclear".into(), Recipe { tier :
MachineTier::TierTwo, time : 180f64, energy : 360000f64, temperature
: RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Astroloy".into(), 10f64),
("Inconel".into(), 5f64), ("Steel".into(), 5f64)] .into_iter()
.collect() }), ("ItemBatteryCharger".into(), Recipe { tier :
MachineTier::TierOne, time : 1f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 10f64)] .into_iter().collect() }),
("ItemBatteryChargerSmall".into(), Recipe { tier :
MachineTier::TierOne, time : 1f64, energy : 250f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }),
("ItemCableAnalyser".into(), Recipe { tier : MachineTier::TierOne,
time : 5f64, energy : 100f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 1f64),
("Silicon".into(), 2f64)] .into_iter().collect() }), ("ItemCableCoil"
.into(), Recipe { tier : MachineTier::TierOne, time : 1f64, energy :
100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents :
vec![("Copper".into(), 0.5f64)] .into_iter().collect() }),
("ItemCableCoilHeavy".into(), Recipe { tier : MachineTier::TierOne,
time : 5f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 0.5f64), ("Gold".into(), 0.5f64)]
.into_iter().collect() }), ("ItemCableFuse".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron"
.into(), 5f64)] .into_iter().collect() }), ("ItemCreditCard".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 200f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
2f64), ("Silicon".into(), 5f64)] .into_iter().collect() }),
("ItemDataDisk".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 5f64)]
.into_iter().collect() }), ("ItemElectronicParts".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 10f64, temperature
: RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold"
.into(), 2f64), ("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemFlashingLight".into(), Recipe { tier : MachineTier::TierOne,
time : 5f64, energy : 100f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 3f64), ("Iron".into(), 2f64)]
.into_iter().collect() }), ("ItemHEMDroidRepairKit".into(), Recipe {
tier : MachineTier::TierTwo, time : 40f64, energy : 1500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Electrum".into(),
10f64), ("Inconel".into(), 5f64), ("Solder".into(), 5f64)]
.into_iter().collect() }), ("ItemIntegratedCircuit10".into(), Recipe
{ tier : MachineTier::TierOne, time : 40f64, energy : 4000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 4i64, reagents : vec![("Electrum".into(),
5f64), ("Gold".into(), 10f64), ("Solder".into(), 2f64), ("Steel"
.into(), 4f64)] .into_iter().collect() }), ("ItemKitAIMeE".into(),
Recipe { tier : MachineTier::TierTwo, time : 25f64, energy : 2200f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 7i64, reagents : vec![("Astroloy".into(),
10f64), ("Constantan".into(), 8f64), ("Copper".into(), 5f64),
("Electrum".into(), 15f64), ("Gold".into(), 5f64), ("Invar".into(),
7f64), ("Steel".into(), 22f64)] .into_iter().collect() }),
("ItemKitAdvancedComposter".into(), Recipe { tier :
MachineTier::TierTwo, time : 55f64, energy : 20000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 15f64),
("Electrum".into(), 20f64), ("Solder".into(), 5f64), ("Steel".into(),
30f64)] .into_iter().collect() }), ("ItemKitAdvancedFurnace".into(),
Recipe { tier : MachineTier::TierTwo, time : 180f64, energy :
36000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 6i64, reagents :
vec![("Copper".into(), 25f64), ("Electrum".into(), 15f64), ("Gold"
.into(), 5f64), ("Silicon".into(), 6f64), ("Solder".into(), 8f64),
("Steel".into(), 30f64)] .into_iter().collect() }),
("ItemKitAdvancedPackagingMachine".into(), Recipe { tier :
MachineTier::TierTwo, time : 60f64, energy : 18000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Constantan".into(), 10f64),
("Copper".into(), 10f64), ("Electrum".into(), 15f64), ("Steel"
.into(), 20f64)] .into_iter().collect() }), ("ItemKitAutoMinerSmall"
.into(), Recipe { tier : MachineTier::TierTwo, time : 90f64, energy :
9000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 5i64, reagents :
vec![("Copper".into(), 15f64), ("Electrum".into(), 50f64), ("Invar"
.into(), 25f64), ("Iron".into(), 15f64), ("Steel".into(), 100f64)]
.into_iter().collect() }), ("ItemKitAutomatedOven".into(), Recipe {
tier : MachineTier::TierTwo, time : 50f64, energy : 15000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 5i64, reagents : vec![("Constantan"
.into(), 5f64), ("Copper".into(), 15f64), ("Gold".into(), 10f64),
("Solder".into(), 10f64), ("Steel".into(), 25f64)] .into_iter()
.collect() }), ("ItemKitBattery".into(), Recipe { tier :
MachineTier::TierOne, time : 120f64, energy : 12000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold"
.into(), 20f64), ("Steel".into(), 20f64)] .into_iter().collect() }),
("ItemKitBatteryLarge".into(), Recipe { tier : MachineTier::TierTwo,
time : 240f64, energy : 96000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 6i64,
reagents : vec![("Copper".into(), 35f64), ("Electrum".into(), 10f64),
("Gold".into(), 35f64), ("Silicon".into(), 5f64), ("Steel".into(),
35f64), ("Stellite".into(), 2f64)] .into_iter().collect() }),
("ItemKitBeacon".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 4i64,
reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 4f64),
("Solder".into(), 2f64), ("Steel".into(), 5f64)] .into_iter()
.collect() }), ("ItemKitComputer".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold"
.into(), 5f64), ("Iron".into(), 5f64)] .into_iter().collect() }),
("ItemKitConsole".into(), Recipe { tier : MachineTier::TierOne, time
: 5f64, energy : 100f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 3f64),
("Iron".into(), 2f64)] .into_iter().collect() }),
("ItemKitDynamicGenerator".into(), Recipe { tier :
MachineTier::TierOne, time : 120f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Gold".into(), 15f64), ("Nickel"
.into(), 15f64), ("Solder".into(), 5f64), ("Steel".into(), 20f64)]
.into_iter().collect() }), ("ItemKitElevator".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 4f64), ("Solder".into(), 2f64), ("Steel".into(), 2f64)]
.into_iter().collect() }), ("ItemKitFridgeBig".into(), Recipe { tier
: MachineTier::TierOne, time : 10f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 10f64), ("Gold"
.into(), 5f64), ("Iron".into(), 20f64), ("Steel".into(), 15f64)]
.into_iter().collect() }), ("ItemKitFridgeSmall".into(), Recipe {
tier : MachineTier::TierOne, time : 10f64, energy : 100f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
5f64), ("Gold".into(), 2f64), ("Iron".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitGasGenerator".into(), Recipe { tier :
MachineTier::TierOne, time : 120f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 10f64), ("Iron"
.into(), 50f64)] .into_iter().collect() }), ("ItemKitGroundTelescope"
.into(), Recipe { tier : MachineTier::TierOne, time : 150f64, energy
: 24000f64, temperature : RecipeRange { start : 1f64, stop :
80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64,
stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix {
rule : 0i64, is_any : true, is_any_to_remove : false, reagents :
vec![] .into_iter().collect() }, count_types : 3i64, reagents :
vec![("Electrum".into(), 15f64), ("Solder".into(), 10f64), ("Steel"
.into(), 25f64)] .into_iter().collect() }), ("ItemKitGrowLight"
.into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 5f64), ("Electrum".into(), 10f64), ("Steel"
.into(), 5f64)] .into_iter().collect() }), ("ItemKitHarvie".into(),
Recipe { tier : MachineTier::TierOne, time : 60f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 5i64, reagents : vec![("Copper".into(),
15f64), ("Electrum".into(), 10f64), ("Silicon".into(), 5f64),
("Solder".into(), 5f64), ("Steel".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitHorizontalAutoMiner".into(), Recipe { tier :
MachineTier::TierTwo, time : 60f64, energy : 60000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 5i64, reagents : vec![("Copper".into(), 7f64),
("Electrum".into(), 25f64), ("Invar".into(), 15f64), ("Iron".into(),
8f64), ("Steel".into(), 60f64)] .into_iter().collect() }),
("ItemKitHydroponicStation".into(), Recipe { tier :
MachineTier::TierOne, time : 120f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 20f64), ("Gold"
.into(), 5f64), ("Nickel".into(), 5f64), ("Steel".into(), 10f64)]
.into_iter().collect() }), ("ItemKitLandingPadAtmos".into(), Recipe {
tier : MachineTier::TierOne, time : 10f64, energy : 1000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
1f64), ("Steel".into(), 5f64)] .into_iter().collect() }),
("ItemKitLandingPadBasic".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Steel"
.into(), 5f64)] .into_iter().collect() }),
("ItemKitLandingPadWaypoint".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Steel"
.into(), 5f64)] .into_iter().collect() }),
("ItemKitLargeSatelliteDish".into(), Recipe { tier :
MachineTier::TierOne, time : 240f64, energy : 72000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Astroloy".into(), 100f64),
("Inconel".into(), 50f64), ("Waspaloy".into(), 20f64)] .into_iter()
.collect() }), ("ItemKitLogicCircuit".into(), Recipe { tier :
MachineTier::TierOne, time : 40f64, energy : 2000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 10f64),
("Solder".into(), 2f64), ("Steel".into(), 4f64)] .into_iter()
.collect() }), ("ItemKitLogicInputOutput".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Gold"
.into(), 1f64)] .into_iter().collect() }), ("ItemKitLogicMemory"
.into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy :
1000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 1f64), ("Gold".into(), 1f64)] .into_iter()
.collect() }), ("ItemKitLogicProcessor".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 2f64)] .into_iter().collect() }), ("ItemKitLogicSwitch"
.into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy :
1000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 1f64), ("Gold".into(), 1f64)] .into_iter()
.collect() }), ("ItemKitLogicTransmitter".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 1f64),
("Electrum".into(), 3f64), ("Gold".into(), 2f64), ("Silicon".into(),
5f64)] .into_iter().collect() }), ("ItemKitMusicMachines".into(),
Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 1000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
2f64), ("Gold".into(), 2f64)] .into_iter().collect() }),
("ItemKitPowerTransmitter".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 7f64), ("Gold"
.into(), 5f64), ("Steel".into(), 3f64)] .into_iter().collect() }),
("ItemKitPowerTransmitterOmni".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 8f64), ("Gold"
.into(), 4f64), ("Steel".into(), 4f64)] .into_iter().collect() }),
("ItemKitPressurePlate".into(), Recipe { tier : MachineTier::TierOne,
time : 10f64, energy : 1000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)]
.into_iter().collect() }), ("ItemKitResearchMachine".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 10f64, temperature
: RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold"
.into(), 2f64), ("Iron".into(), 9f64)] .into_iter().collect() }),
("ItemKitSatelliteDish".into(), Recipe { tier : MachineTier::TierOne,
time : 120f64, energy : 24000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Electrum".into(), 15f64), ("Solder".into(), 10f64),
("Steel".into(), 20f64)] .into_iter().collect() }), ("ItemKitSensor"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
10f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(),
3f64)] .into_iter().collect() }), ("ItemKitSmallSatelliteDish"
.into(), Recipe { tier : MachineTier::TierOne, time : 60f64, energy :
6000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 10f64), ("Gold".into(), 5f64)] .into_iter()
.collect() }), ("ItemKitSolarPanel".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold"
.into(), 5f64), ("Steel".into(), 15f64)] .into_iter().collect() }),
("ItemKitSolarPanelBasic".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 10f64), ("Gold"
.into(), 2f64), ("Iron".into(), 10f64)] .into_iter().collect() }),
("ItemKitSolarPanelBasicReinforced".into(), Recipe { tier :
MachineTier::TierTwo, time : 120f64, energy : 24000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 10f64),
("Electrum".into(), 2f64), ("Invar".into(), 10f64), ("Steel".into(),
10f64)] .into_iter().collect() }), ("ItemKitSolarPanelReinforced"
.into(), Recipe { tier : MachineTier::TierTwo, time : 120f64, energy
: 24000f64, temperature : RecipeRange { start : 1f64, stop :
80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64,
stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix {
rule : 0i64, is_any : true, is_any_to_remove : false, reagents :
vec![] .into_iter().collect() }, count_types : 4i64, reagents :
vec![("Astroloy".into(), 15f64), ("Copper".into(), 20f64),
("Electrum".into(), 5f64), ("Steel".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitSolidGenerator".into(), Recipe { tier :
MachineTier::TierOne, time : 120f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 10f64), ("Iron"
.into(), 50f64)] .into_iter().collect() }), ("ItemKitSpeaker".into(),
Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 1000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
1f64), ("Gold".into(), 1f64), ("Steel".into(), 5f64)] .into_iter()
.collect() }), ("ItemKitStirlingEngine".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold"
.into(), 5f64), ("Steel".into(), 30f64)] .into_iter().collect() }),
("ItemKitTransformer".into(), Recipe { tier : MachineTier::TierOne,
time : 60f64, energy : 12000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Electrum".into(), 5f64), ("Steel".into(), 10f64)]
.into_iter().collect() }), ("ItemKitTransformerSmall".into(), Recipe
{ tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
3f64), ("Gold".into(), 1f64), ("Iron".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitTurbineGenerator".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 4f64), ("Iron".into(), 5f64), ("Solder".into(), 4f64)]
.into_iter().collect() }), ("ItemKitUprightWindTurbine".into(),
Recipe { tier : MachineTier::TierOne, time : 60f64, energy :
12000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 10f64), ("Gold".into(), 5f64), ("Iron".into(),
10f64)] .into_iter().collect() }), ("ItemKitVendingMachine".into(),
Recipe { tier : MachineTier::TierOne, time : 60f64, energy :
15000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 4i64, reagents :
vec![("Electrum".into(), 50f64), ("Gold".into(), 50f64), ("Solder"
.into(), 10f64), ("Steel".into(), 20f64)] .into_iter().collect() }),
("ItemKitVendingMachineRefrigerated".into(), Recipe { tier :
MachineTier::TierTwo, time : 60f64, energy : 25000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Electrum".into(), 80f64),
("Gold".into(), 60f64), ("Solder".into(), 30f64), ("Steel".into(),
40f64)] .into_iter().collect() }), ("ItemKitWeatherStation".into(),
Recipe { tier : MachineTier::TierOne, time : 60f64, energy :
12000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 4i64, reagents :
vec![("Copper".into(), 5f64), ("Gold".into(), 3f64), ("Iron".into(),
8f64), ("Steel".into(), 3f64)] .into_iter().collect() }),
("ItemKitWindTurbine".into(), Recipe { tier : MachineTier::TierTwo,
time : 60f64, energy : 12000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 10f64), ("Electrum".into(), 5f64),
("Steel".into(), 20f64)] .into_iter().collect() }), ("ItemLabeller"
.into(), Recipe { tier : MachineTier::TierOne, time : 15f64, energy :
800f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 2f64), ("Gold".into(), 1f64), ("Iron".into(),
3f64)] .into_iter().collect() }), ("ItemLaptop".into(), Recipe { tier
: MachineTier::TierTwo, time : 60f64, energy : 18000f64, temperature
: RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 5i64, reagents : vec![("Copper".into(), 5.5f64),
("Electrum".into(), 5f64), ("Gold".into(), 12f64), ("Solder".into(),
5f64), ("Steel".into(), 2f64)] .into_iter().collect() }),
("ItemPowerConnector".into(), Recipe { tier : MachineTier::TierOne,
time : 1f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 3f64),
("Iron".into(), 10f64)] .into_iter().collect() }),
("ItemResearchCapsule".into(), Recipe { tier : MachineTier::TierOne,
time : 3f64, energy : 400f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 3f64), ("Gold".into(), 2f64),
("Iron".into(), 9f64)] .into_iter().collect() }),
("ItemResearchCapsuleGreen".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 10f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Astroloy".into(), 2f64),
("Copper".into(), 3f64), ("Gold".into(), 2f64), ("Iron".into(),
9f64)] .into_iter().collect() }), ("ItemResearchCapsuleRed".into(),
Recipe { tier : MachineTier::TierOne, time : 8f64, energy : 50f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
3f64), ("Gold".into(), 2f64), ("Iron".into(), 2f64)] .into_iter()
.collect() }), ("ItemResearchCapsuleYellow".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Astroloy".into(), 3f64),
("Copper".into(), 3f64), ("Gold".into(), 2f64), ("Iron".into(),
9f64)] .into_iter().collect() }), ("ItemSoundCartridgeBass".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
2f64), ("Gold".into(), 2f64), ("Silicon".into(), 2f64)] .into_iter()
.collect() }), ("ItemSoundCartridgeDrums".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 2f64), ("Silicon".into(), 2f64)] .into_iter().collect() }),
("ItemSoundCartridgeLeads".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 2f64), ("Silicon".into(), 2f64)] .into_iter().collect() }),
("ItemSoundCartridgeSynth".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 2f64), ("Silicon".into(), 2f64)] .into_iter().collect() }),
("ItemTablet".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 100f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 3f64), ("Gold".into(), 2f64),
("Solder".into(), 5f64)] .into_iter().collect() }), ("ItemWallLight"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
10f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 2f64), ("Iron".into(), 1f64)] .into_iter()
.collect() }), ("MotherboardComms".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 5f64),
("Electrum".into(), 2f64), ("Gold".into(), 5f64), ("Silver".into(),
5f64)] .into_iter().collect() }), ("MotherboardLogic".into(), Recipe
{ tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
5f64), ("Gold".into(), 5f64)] .into_iter().collect() }),
("MotherboardProgrammableChip".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64)] .into_iter().collect() }), ("MotherboardRockets"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Electrum".into(), 5f64), ("Solder".into(), 5f64)] .into_iter()
.collect() }), ("MotherboardSorter".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Gold".into(), 5f64), ("Silver"
.into(), 5f64)] .into_iter().collect() }), ("PipeBenderMod".into(),
Recipe { tier : MachineTier::TierTwo, time : 180f64, energy :
72000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 4i64, reagents :
vec![("Constantan".into(), 8f64), ("Electrum".into(), 8f64),
("Solder".into(), 8f64), ("Steel".into(), 35f64)] .into_iter()
.collect() }), ("PortableComposter".into(), Recipe { tier :
MachineTier::TierOne, time : 55f64, energy : 20000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 15f64),
("Steel".into(), 10f64)] .into_iter().collect() }),
("PortableSolarPanel".into(), Recipe { tier : MachineTier::TierOne,
time : 5f64, energy : 200f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 3f64),
("Iron".into(), 5f64)] .into_iter().collect() }), ("ToolPrinterMod"
.into(), Recipe { tier : MachineTier::TierTwo, time : 180f64, energy
: 72000f64, temperature : RecipeRange { start : 1f64, stop :
80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64,
stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix {
rule : 0i64, is_any : true, is_any_to_remove : false, reagents :
vec![] .into_iter().collect() }, count_types : 4i64, reagents :
vec![("Constantan".into(), 8f64), ("Electrum".into(), 8f64),
("Solder".into(), 8f64), ("Steel".into(), 35f64)] .into_iter()
.collect() })
]
.into_iter()
.collect(),
}),
memory: MemoryInfo {
instructions: Some(
vec![
("DeviceSetLock".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>LOCK_STATE</color> | <color=orange>BOOL_8</color> |\r\n| <color=grey>16-63 </color> | <color=grey>UNUSED</color> | <color=grey>48</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |"
.into(), typ : "PrinterInstruction".into(), value : 6i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "LOCK_STATE".into(), typ :
InstructionPartType::Bool8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(48u32) }] .into_iter().collect() }),
("EjectAllReagents".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 8i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() }),
("EjectReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "PrinterInstruction".into(), value : 7i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "REAGENT_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("ExecuteRecipe".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 2i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "PREFAB_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("JumpIfNextInvalid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 4i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("JumpToAddress".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 5i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("MissingRecipeReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 54 TO 62</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY_CEIL</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 9i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((54u32,
Some(62u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY_CEIL".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "REAGENT_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("StackPointer".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESS 63</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>INDEX</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((63u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "INDEX".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("WaitUntilNextValid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 3i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::ReadWrite,
memory_size: 64u32,
},
}
.into(),
);
map.insert(
-827912235i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureElevatorLevelFront".into(),
prefab_hash: -827912235i32,
desc: "".into(),
name: "Elevator Level (Cabled)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::ElevatorSpeed, MemoryAccess::ReadWrite),
(LogicType::ElevatorLevel, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Elevator, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Elevator, role : ConnectionRole::None },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
2060648791i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureElevatorLevelIndustrial".into(),
prefab_hash: 2060648791i32,
desc: "".into(),
name: "Elevator Level".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::ElevatorSpeed, MemoryAccess::ReadWrite),
(LogicType::ElevatorLevel, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Elevator, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Elevator, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
826144419i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureElevatorShaft".into(),
prefab_hash: 826144419i32,
desc: "".into(),
name: "Elevator Shaft (Cabled)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ElevatorSpeed,
MemoryAccess::ReadWrite), (LogicType::ElevatorLevel,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Elevator, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Elevator, role : ConnectionRole::None },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1998354978i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureElevatorShaftIndustrial".into(),
prefab_hash: 1998354978i32,
desc: "".into(),
name: "Elevator Shaft".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::ElevatorSpeed, MemoryAccess::ReadWrite),
(LogicType::ElevatorLevel, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Elevator, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Elevator, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1668452680i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureEmergencyButton".into(),
prefab_hash: 1668452680i32,
desc: "Description coming.".into(),
name: "Important Button".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
2035781224i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureEngineMountTypeA1".into(),
prefab_hash: 2035781224i32,
desc: "".into(),
name: "Engine Mount (Type A1)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1429782576i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureEvaporationChamber".into(),
prefab_hash: -1429782576i32,
desc: "A device for safely evaporating liquids into gasses. Liquids and Gasses will both exist safely inside the device. Lowering the pressure target of the in-built back pressure regulator using the setting wheel will change the boiling temperature of liquids inside.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Evaporation Chamber. \n Paired with <link=ThingStructureCondensationChamber><color=green>Condensation Chamber</color></link> Stationeers can exploit the phase change properties of gases to build a DIY air conditioner."
.into(),
name: "Evaporation Chamber".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.001f32,
radiation_factor: 0.000050000002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input2 }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
195298587i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureExpansionValve".into(),
prefab_hash: 195298587i32,
desc: "Allows for moving liquids from a liquid pipe into a gas pipe. Only allows liquids to pass in one direction. Typically this is done to allow the liquid to evaporate into a gas as part of an airconditioning loop."
.into(),
name: "Expansion Valve".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1622567418i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFairingTypeA1".into(),
prefab_hash: 1622567418i32,
desc: "".into(),
name: "Fairing (Type A1)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-104908736i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFairingTypeA2".into(),
prefab_hash: -104908736i32,
desc: "".into(),
name: "Fairing (Type A2)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1900541738i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFairingTypeA3".into(),
prefab_hash: -1900541738i32,
desc: "".into(),
name: "Fairing (Type A3)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-348054045i32,
StructureCircuitHolderTemplate {
templateType: "StructureCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "StructureFiltration".into(),
prefab_hash: -348054045i32,
desc: "The Filtration Unit is based on a long-standing <link=ExMin><color=#0080FFFF>ExMin</color></link> system, itself based on older designs of uncertain provenance. It is available in the <link=ThingItemKitAtmospherics><color=green>Kit (Atmospherics)</color></link>.\nThe device has nonetheless proven indispensable for <link=Stationeers><color=#0080FFFF>Stationeer</color></link> atmospheric systems, as it can filter two <link=GasPage><color=#0080FFFF>gases</color></link> simultaneously from a single pipe network using a dual filter array. The unit has an input, and a filter output as well as an unfiltered outlet for any residual gases.\n"
.into(),
name: "Filtration".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect()), (2u32, vec![] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::PressureInput, MemoryAccess::Read),
(LogicType::TemperatureInput, MemoryAccess::Read),
(LogicType::RatioOxygenInput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioNitrogenInput, MemoryAccess::Read),
(LogicType::RatioPollutantInput, MemoryAccess::Read),
(LogicType::RatioVolatilesInput, MemoryAccess::Read),
(LogicType::RatioWaterInput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideInput, MemoryAccess::Read),
(LogicType::TotalMolesInput, MemoryAccess::Read),
(LogicType::PressureOutput, MemoryAccess::Read),
(LogicType::TemperatureOutput, MemoryAccess::Read),
(LogicType::RatioOxygenOutput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioPollutantOutput, MemoryAccess::Read),
(LogicType::RatioVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioWaterOutput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideOutput, MemoryAccess::Read),
(LogicType::TotalMolesOutput, MemoryAccess::Read),
(LogicType::PressureOutput2, MemoryAccess::Read),
(LogicType::TemperatureOutput2, MemoryAccess::Read),
(LogicType::RatioOxygenOutput2, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideOutput2, MemoryAccess::Read),
(LogicType::RatioNitrogenOutput2, MemoryAccess::Read),
(LogicType::RatioPollutantOutput2, MemoryAccess::Read),
(LogicType::RatioVolatilesOutput2, MemoryAccess::Read),
(LogicType::RatioWaterOutput2, MemoryAccess::Read),
(LogicType::RatioNitrousOxideOutput2, MemoryAccess::Read),
(LogicType::TotalMolesOutput2, MemoryAccess::Read),
(LogicType::CombustionInput, MemoryAccess::Read),
(LogicType::CombustionOutput, MemoryAccess::Read),
(LogicType::CombustionOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenInput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesOutput2, MemoryAccess::Read),
(LogicType::RatioSteamInput, MemoryAccess::Read),
(LogicType::RatioSteamOutput, MemoryAccess::Read),
(LogicType::RatioSteamOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantInput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantOutput2, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideOutput2, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Idle".into()), (1u32, "Active".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo
{ name : "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name :
"Programmable Chip".into(), typ : Class::ProgrammableChip }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Waste },
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: Some(2u32),
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1529819532i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFlagSmall".into(),
prefab_hash: -1529819532i32,
desc: "".into(),
name: "Small Flag".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1535893860i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureFlashingLight".into(),
prefab_hash: -1535893860i32,
desc: "Few objects or ideas are as clearly and transparently named as the Flashing Light, although fans of scrupulous accuracy have been known to refer to it by its full, official title: \'Default Yellow Flashing Light\'."
.into(),
name: "Flashing Light".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
839890807i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureFlatBench".into(),
prefab_hash: 839890807i32,
desc: "".into(),
name: "Bench (Flat)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1048813293i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFloorDrain".into(),
prefab_hash: 1048813293i32,
desc: "A passive liquid floor inlet that quickly removes liquids in one direction from the world into the connected pipe network. It will equalise gasses with the world atmosphere also."
.into(),
name: "Passive Liquid Inlet".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1432512808i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFrame".into(),
prefab_hash: 1432512808i32,
desc: "More durable than the <link=ThingStructureFrameIron><color=green>Iron Frame</color></link>, steel frames also have several variations for more complex constructions, such as the <link=ThingStructureFrameCorner><color=green>Steel Frame (Corner)</color></link> and <link=ThingStructureFrameCornerCut><color=green>Steel Frame (Corner Cut)</color></link>. Like iron frames, they are placed then completed by welding <link=ThingItemSteelSheets><color=green>Steel Sheets</color></link> to the open framework."
.into(),
name: "Steel Frame".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2112390778i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFrameCorner".into(),
prefab_hash: -2112390778i32,
desc: "More durable than the <link=ThingStructureFrameIron><color=green>Iron Frame</color></link>, steel frames also offer several variations for more complex lattice constructions. \nWith a little patience and maneuvering, the corner frame\'s Gothic-inspired silhouette allows the creation of ogival arches and even more ambitious architecture, although they are not airtight and cannot be built on."
.into(),
name: "Steel Frame (Corner)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
271315669i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFrameCornerCut".into(),
prefab_hash: 271315669i32,
desc: "0.Mode0\n1.Mode1".into(),
name: "Steel Frame (Corner Cut)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1240951678i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFrameIron".into(),
prefab_hash: -1240951678i32,
desc: "".into(),
name: "Iron Frame".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-302420053i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFrameSide".into(),
prefab_hash: -302420053i32,
desc: "More durable than the <link=ThingStructureFrameIron><color=green>Iron Frame</color></link>, steel frames also provide variations for more ornate constructions."
.into(),
name: "Steel Frame (Side)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
958476921i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureFridgeBig".into(),
prefab_hash: 958476921i32,
desc: "The <link=Xigo><color=#0080FFFF>Xigo</color></link> Koolaid fridge is a self-cooling storage device with 15 slots that preserves food when powered and turned on. While many users have complained about the placement of the power switch, its place in the pantheon of off-world whiteware is unquestioned.\n \nWith its own permanent internal atmosphere, the Koolaid fridge slows the decay of <link=OrganicPage><color=#0080FFFF>food</color></link> by maintaining an optimal internal temperature. Its power usage varies on the external temperature against which it must balance its internal temperature. As such, it must shed heat to operate, so the Koolaid fridge DOES NOT work in a vacuum.\n \nAlso, don\'t leave the door open, as it will equalize with the current world temperature. And maybe start to beep.\n\nFor more information about food preservation, visit the <link=DecayPage><color=#0080FFFF>food decay</color></link> section of the Stationpedia."
.into(),
name: "Fridge (Large)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (6u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (7u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (8u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (9u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (10u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (11u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (12u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (13u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (14u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
751887598i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureFridgeSmall".into(),
prefab_hash: 751887598i32,
desc: "Essentially a heavily insulated box that allows users to pipe in any desired atmosphere, the <link=Recurso><color=#0080FFFF>Recurso</color></link> Minibar fridge was a simple solution to the problem of <link=NutritionPage><color=#0080FFFF>food decay</color></link>. It stores a small number of items, at any temperature you can muster.\n \n For more information about food preservation, visit the <link=DecayPage><color=#0080FFFF>food decay</color></link> section of the Stationpedia."
.into(),
name: "Fridge Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1947944864i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureFurnace".into(),
prefab_hash: 1947944864i32,
desc: "The Zhurong furnace employs a high-temperature gas mixture of <link=GasOxygen><color=#44AD83>Oxygen</color></link> and <link=GasVolatiles><color=#44AD83>Volatiles</color></link> to smelt <link=IngotPage><color=#0080FFFF>ingots</color></link> and a range of <link=IngotPage><color=#0080FFFF>alloys</color></link> as raw materials for <link=FabricatorPage><color=#0080FFFF>fabricators</color></link>.\nA basic gas mixture can be achieved by adding <link=ThingItemOxite><color=green>Ice (Oxite)</color></link> and <link=ThingItemVolatiles><color=green>Ice (Volatiles)</color></link> in a 1:2 ratio directly to the furnace, but more complex alloys will require careful management of a dedicated gas mixing network. Exact ingredient ratios must be observed. Likewise, smelting ores at insufficient temperatures will produce <link=ReagentPage><color=#0080FFFF>reagents</color></link>, which must be recycled.\nIf liquids are present in the furnace, they will gather there until the furnace is connected to a liquid pipe network."
.into(),
name: "Furnace".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Reagents,
MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::RecipeHash, MemoryAccess::Read), (LogicType::ClearMemory,
MemoryAccess::Write), (LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output2 },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: true,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: false,
has_open_state: true,
has_reagents: true,
},
}
.into(),
);
map.insert(
1033024712i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFuselageTypeA1".into(),
prefab_hash: 1033024712i32,
desc: "".into(),
name: "Fuselage (Type A1)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1533287054i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFuselageTypeA2".into(),
prefab_hash: -1533287054i32,
desc: "".into(),
name: "Fuselage (Type A2)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1308115015i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFuselageTypeA4".into(),
prefab_hash: 1308115015i32,
desc: "".into(),
name: "Fuselage (Type A4)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
147395155i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureFuselageTypeC5".into(),
prefab_hash: 147395155i32,
desc: "".into(),
name: "Fuselage (Type C5)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1165997963i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGasGenerator".into(),
prefab_hash: 1165997963i32,
desc: "".into(),
name: "Gas Fuel Generator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.01f32,
radiation_factor: 0.01f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PowerGeneration,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
2104106366i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGasMixer".into(),
prefab_hash: 2104106366i32,
desc: "Indispensable for producing precise atmospheric ratios, this gas mixer blends two gases in proportions ranging anywhere from 0-100%."
.into(),
name: "Gas Mixer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input2 }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1252983604i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGasSensor".into(),
prefab_hash: -1252983604i32,
desc: "Gas sensors are designed to monitor and report basic atmospheric information, including temperature, pressure, and gas ratios. They also make wonderful wedding presents."
.into(),
name: "Gas Sensor".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1632165346i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGasTankStorage".into(),
prefab_hash: 1632165346i32,
desc: "When connected to a pipe network, the tank storage unit allows you to refill a <link=ThingItemGasCanisterEmpty><color=green>Canister</color></link>, as well as read various atmospheric data from the <link=SlotGasCanister><color=orange>Gas Canister</color></link>."
.into(),
name: "Gas Tank Storage".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Quantity,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1680477930i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGasUmbilicalFemale".into(),
prefab_hash: -1680477930i32,
desc: "".into(),
name: "Umbilical Socket (Gas)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-648683847i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGasUmbilicalFemaleSide".into(),
prefab_hash: -648683847i32,
desc: "".into(),
name: "Umbilical Socket Angle (Gas)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1814939203i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGasUmbilicalMale".into(),
prefab_hash: -1814939203i32,
desc: "0.Left\n1.Center\n2.Right".into(),
name: "Umbilical (Gas)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-324331872i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGlassDoor".into(),
prefab_hash: -324331872i32,
desc: "0.Operate\n1.Logic".into(),
name: "Glass Door".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-214232602i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGovernedGasEngine".into(),
prefab_hash: -214232602i32,
desc: "The most reliable of all the rocket engines, the Pumped Gas Engine runs on a 2:1 mix of <link=GasVolatiles><color=#44AD83>Volatiles</color></link> to <link=GasOxygen><color=#44AD83>Oxygen</color></link> gas."
.into(),
name: "Pumped Gas Engine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::Throttle, MemoryAccess::ReadWrite),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::PassedMoles, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-619745681i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGroundBasedTelescope".into(),
prefab_hash: -619745681i32,
desc: "A telescope that can be oriented to observe Celestial Bodies. When within full alignment will show orbital information for that celestial object. Atmospheric conditions may disrupt the ability to observe some objects at some times of day. To collect Horizontal and Vertical values you can use a <link=ThingStructureRocketCelestialTracker><color=green>Rocket Celestial Tracker</color></link> while it is in orbit, or a <link=ThingStructureDaylightSensor><color=green>Daylight Sensor</color></link> for primary body data."
.into(),
name: "Telescope".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::HorizontalRatio, MemoryAccess::ReadWrite),
(LogicType::VerticalRatio, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::CelestialHash, MemoryAccess::Read),
(LogicType::AlignmentError, MemoryAccess::Read),
(LogicType::DistanceAu, MemoryAccess::Read), (LogicType::OrbitPeriod,
MemoryAccess::Read), (LogicType::Inclination, MemoryAccess::Read),
(LogicType::Eccentricity, MemoryAccess::Read),
(LogicType::SemiMajorAxis, MemoryAccess::Read),
(LogicType::DistanceKm, MemoryAccess::Read),
(LogicType::CelestialParentHash, MemoryAccess::Read),
(LogicType::TrueAnomaly, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1758710260i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureGrowLight".into(),
prefab_hash: -1758710260i32,
desc: "<link=Agrizero><color=#0080FFFF>Agrizero\'s</color></link> leading hydroponic lighting system, the GrowUp UV light supplements sunshine in low light or sun-distant conditions. The unit adds growability over the space of a grid, so requires proximate placement to work. "
.into(),
name: "Grow Light".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
958056199i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureHarvie".into(),
prefab_hash: 958056199i32,
desc: "Use above a <link=ThingStructureHydroponicsTray><color=green>Hydroponics Tray</color></link> or <link=ThingStructureHydroponicsTrayData><color=green>Hydroponics Device</color></link> to manage the planting and harvest of your crops. It contains a button that will allow you to activate it\'s modes, or connect it to a logic system to do this for you. The modes indicate current growth status of the plant below. Import is used for planting, and harvested plants are sent to export."
.into(),
name: "Harvie".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::Plant,
MemoryAccess::Write), (LogicType::Harvest, MemoryAccess::Write),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Idle".into()), (1u32, "Happy".into()), (2u32, "UnHappy"
.into()), (3u32, "Dead".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::Plant }, SlotInfo { name
: "Export".into(), typ : Class::None }, SlotInfo { name : "Hand".into(),
typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
944685608i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureHeatExchangeLiquidtoGas".into(),
prefab_hash: 944685608i32,
desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored <link=Sinotai><color=#0080FFFF>Sinotai</color></link> designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass separate liquid and gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to devices like a <link=ThingStructureVolumePump><color=green>Volume Pump</color></link> or a <link=ThingStructureBackLiquidPressureRegulator><color=green>Liquid Back Volume Regulator</color></link>."
.into(),
name: "Heat Exchanger - Liquid + Gas".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
21266291i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureHeatExchangerGastoGas".into(),
prefab_hash: 21266291i32,
desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored <link=Sinotai><color=#0080FFFF>Sinotai</color></link> designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass two gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to gas management devices like a <link=ThingStructureVolumePump><color=green>Volume Pump</color></link> or a <link=ThingStructureBackPressureRegulator><color=green>Back Pressure Regulator</color></link>."
.into(),
name: "Heat Exchanger - Gas".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-613784254i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureHeatExchangerLiquidtoLiquid".into(),
prefab_hash: -613784254i32,
desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored <link=Sinotai><color=#0080FFFF>Sinotai</color></link> designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass two liquid networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to liquid management devices like a <link=ThingStructureLiquidVolumePump><color=green>Liquid Volume Pump</color></link> or a <link=ThingStructureBackLiquidPressureRegulator><color=green>Liquid Back Volume Regulator</color></link>.\n"
.into(),
name: "Heat Exchanger - Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1070427573i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureHorizontalAutoMiner".into(),
prefab_hash: 1070427573i32,
desc: "The <link=Recurso><color=#0080FFFF>Recurso</color></link> OGRE (Orthogonal Ground Rotating Excavator) is a base structure with attached mining vehicle, which will mine a horizontal shaft up to X meters long. When full, the mining vehicle will return to the base to empty itself, before returning to dig. If it encounters empty space, it will also return to base and await instruction. The unit will return if deactivated.\n \nThe OGRE can be connected to a chute system, and is controllable by a logic network. Note that the OGRE outputs more <link=OrePage><color=#0080FFFF>ore</color></link> than a conventional <link=ThingItemMiningDrill><color=green>Mining Drill</color></link> over the same area, due to more efficient processing.\n\n<size=120%><b>MODES</b></size>\nIdle - 0\nMining - 1\nReturning - 2\nDepostingOre - 3\nFinished - 4\n"
.into(),
name: "OGRE".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1888248335i32,
StructureLogicDeviceConsumerMemoryTemplate {
templateType: "StructureLogicDeviceConsumerMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureHydraulicPipeBender".into(),
prefab_hash: -1888248335i32,
desc: "A go-to tool for all your atmospheric and plumbing needs, the <link=ExMin><color=#0080FFFF>ExMin</color></link> Atmoprinter will create everything from pipes, pumps and tanks, to vents and filters, ensuring your survival in any environment. Upgrade the Atmoprinter using a <link=ThingPipeBenderMod><color=green>Pipe Bender Mod</color></link> for additional recipes and faster processing speeds."
.into(),
name: "Hydraulic Pipe Bender".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RecipeHash,
MemoryAccess::ReadWrite), (LogicType::CompletionRatio,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name
: "Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemAstroloyIngot".into(), "ItemConstantanIngot".into(),
"ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot"
.into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(),
"ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot"
.into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(),
"ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel"
.into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(),
"ItemWaspaloyIngot".into(), "ItemWasteIngot".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
fabricator_info: Some(FabricatorInfo {
tier: MachineTier::Undefined,
recipes: vec![
("ApplianceSeedTray".into(), Recipe { tier : MachineTier::TierOne,
time : 10f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Iron".into(), 10f64),
("Silicon".into(), 15f64)] .into_iter().collect() }),
("ItemActiveVent".into(), Recipe { tier : MachineTier::TierOne, time
: 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Gold".into(), 1f64),
("Iron".into(), 5f64)] .into_iter().collect() }),
("ItemAdhesiveInsulation".into(), Recipe { tier :
MachineTier::TierOne, time : 2f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Silicon".into(), 1f64),
("Steel".into(), 0.5f64)] .into_iter().collect() }),
("ItemDynamicAirCon".into(), Recipe { tier : MachineTier::TierOne,
time : 60f64, energy : 5000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 4i64,
reagents : vec![("Gold".into(), 5f64), ("Silver".into(), 5f64),
("Solder".into(), 5f64), ("Steel".into(), 20f64)] .into_iter()
.collect() }), ("ItemDynamicScrubber".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Gold".into(), 5f64), ("Invar"
.into(), 5f64), ("Solder".into(), 5f64), ("Steel".into(), 20f64)]
.into_iter().collect() }), ("ItemGasCanisterEmpty".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
5f64)] .into_iter().collect() }), ("ItemGasCanisterSmart".into(),
Recipe { tier : MachineTier::TierTwo, time : 10f64, energy : 1000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
2f64), ("Silicon".into(), 2f64), ("Steel".into(), 15f64)]
.into_iter().collect() }), ("ItemGasFilterCarbonDioxide".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
5f64)] .into_iter().collect() }), ("ItemGasFilterCarbonDioxideL"
.into(), Recipe { tier : MachineTier::TierTwo, time : 45f64, energy :
4000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite"
.into(), 1f64)] .into_iter().collect() }),
("ItemGasFilterCarbonDioxideM".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Constantan".into(), 1f64),
("Iron".into(), 5f64), ("Silver".into(), 5f64)] .into_iter()
.collect() }), ("ItemGasFilterNitrogen".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemGasFilterNitrogenL".into(), Recipe {
tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Invar".into(),
1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)]
.into_iter().collect() }), ("ItemGasFilterNitrogenM".into(), Recipe {
tier : MachineTier::TierOne, time : 20f64, energy : 2500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Constantan"
.into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)]
.into_iter().collect() }), ("ItemGasFilterNitrousOxide".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
5f64)] .into_iter().collect() }), ("ItemGasFilterNitrousOxideL"
.into(), Recipe { tier : MachineTier::TierTwo, time : 45f64, energy :
4000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Invar".into(), 1f64), ("Steel".into(), 5f64), ("Stellite"
.into(), 1f64)] .into_iter().collect() }),
("ItemGasFilterNitrousOxideM".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 2500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Constantan".into(), 1f64),
("Iron".into(), 5f64), ("Silver".into(), 5f64)] .into_iter()
.collect() }), ("ItemGasFilterOxygen".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemGasFilterOxygenL".into(), Recipe {
tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Invar".into(),
1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)]
.into_iter().collect() }), ("ItemGasFilterOxygenM".into(), Recipe {
tier : MachineTier::TierOne, time : 20f64, energy : 2500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Constantan"
.into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)]
.into_iter().collect() }), ("ItemGasFilterPollutants".into(), Recipe
{ tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
5f64)] .into_iter().collect() }), ("ItemGasFilterPollutantsL".into(),
Recipe { tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Invar".into(),
1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)]
.into_iter().collect() }), ("ItemGasFilterPollutantsM".into(), Recipe
{ tier : MachineTier::TierOne, time : 20f64, energy : 2500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Constantan"
.into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)]
.into_iter().collect() }), ("ItemGasFilterVolatiles".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
5f64)] .into_iter().collect() }), ("ItemGasFilterVolatilesL".into(),
Recipe { tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Invar".into(),
1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)]
.into_iter().collect() }), ("ItemGasFilterVolatilesM".into(), Recipe
{ tier : MachineTier::TierOne, time : 20f64, energy : 2500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Constantan"
.into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)]
.into_iter().collect() }), ("ItemGasFilterWater".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
5f64)] .into_iter().collect() }), ("ItemGasFilterWaterL".into(),
Recipe { tier : MachineTier::TierTwo, time : 45f64, energy : 4000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Invar".into(),
1f64), ("Steel".into(), 5f64), ("Stellite".into(), 1f64)]
.into_iter().collect() }), ("ItemGasFilterWaterM".into(), Recipe {
tier : MachineTier::TierOne, time : 20f64, energy : 2500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Constantan"
.into(), 1f64), ("Iron".into(), 5f64), ("Silver".into(), 5f64)]
.into_iter().collect() }), ("ItemHydroponicTray".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
10f64)] .into_iter().collect() }), ("ItemKitAirlock".into(), Recipe {
tier : MachineTier::TierOne, time : 50f64, energy : 5000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
5f64), ("Gold".into(), 5f64), ("Steel".into(), 15f64)] .into_iter()
.collect() }), ("ItemKitAirlockGate".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 6000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Steel".into(), 25f64)] .into_iter().collect() }),
("ItemKitAtmospherics".into(), Recipe { tier : MachineTier::TierOne,
time : 30f64, energy : 6000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 20f64), ("Gold".into(), 5f64),
("Iron".into(), 10f64)] .into_iter().collect() }), ("ItemKitChute"
.into(), Recipe { tier : MachineTier::TierOne, time : 2f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 3f64)] .into_iter().collect() }), ("ItemKitCryoTube".into(),
Recipe { tier : MachineTier::TierTwo, time : 120f64, energy :
24000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 4i64, reagents :
vec![("Copper".into(), 10f64), ("Gold".into(), 10f64), ("Silver"
.into(), 5f64), ("Steel".into(), 35f64)] .into_iter().collect() }),
("ItemKitDrinkingFountain".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 620f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Iron"
.into(), 5f64), ("Silicon".into(), 8f64)] .into_iter().collect() }),
("ItemKitDynamicCanister".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 20f64)]
.into_iter().collect() }), ("ItemKitDynamicGasTankAdvanced".into(),
Recipe { tier : MachineTier::TierTwo, time : 40f64, energy : 2000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 4i64, reagents : vec![("Copper".into(),
5f64), ("Iron".into(), 20f64), ("Silicon".into(), 5f64), ("Steel"
.into(), 15f64)] .into_iter().collect() }),
("ItemKitDynamicHydroponics".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64),
("Nickel".into(), 5f64), ("Steel".into(), 20f64)] .into_iter()
.collect() }), ("ItemKitDynamicLiquidCanister".into(), Recipe { tier
: MachineTier::TierOne, time : 20f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 20f64)]
.into_iter().collect() }), ("ItemKitDynamicMKIILiquidCanister"
.into(), Recipe { tier : MachineTier::TierTwo, time : 40f64, energy :
2000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 4i64, reagents :
vec![("Copper".into(), 5f64), ("Iron".into(), 20f64), ("Silicon"
.into(), 5f64), ("Steel".into(), 15f64)] .into_iter().collect() }),
("ItemKitEvaporationChamber".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 10f64),
("Silicon".into(), 5f64), ("Steel".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitHeatExchanger".into(), Recipe { tier :
MachineTier::TierTwo, time : 30f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Invar".into(), 10f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }), ("ItemKitIceCrusher"
.into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy :
3000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(),
3f64)] .into_iter().collect() }), ("ItemKitInsulatedLiquidPipe"
.into(), Recipe { tier : MachineTier::TierOne, time : 4f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Silicon".into(), 1f64), ("Steel".into(), 1f64)] .into_iter()
.collect() }), ("ItemKitInsulatedPipe".into(), Recipe { tier :
MachineTier::TierOne, time : 4f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Silicon".into(), 1f64),
("Steel".into(), 1f64)] .into_iter().collect() }),
("ItemKitInsulatedPipeUtility".into(), Recipe { tier :
MachineTier::TierOne, time : 15f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Silicon".into(), 1f64),
("Steel".into(), 5f64)] .into_iter().collect() }),
("ItemKitInsulatedPipeUtilityLiquid".into(), Recipe { tier :
MachineTier::TierOne, time : 15f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Silicon".into(), 1f64),
("Steel".into(), 5f64)] .into_iter().collect() }),
("ItemKitLargeDirectHeatExchanger".into(), Recipe { tier :
MachineTier::TierTwo, time : 30f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Invar".into(), 10f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }),
("ItemKitLargeExtendableRadiator".into(), Recipe { tier :
MachineTier::TierTwo, time : 30f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 10f64),
("Invar".into(), 10f64), ("Steel".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitLiquidRegulator".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 1f64), ("Iron".into(), 5f64)] .into_iter().collect() }),
("ItemKitLiquidTank".into(), Recipe { tier : MachineTier::TierOne,
time : 20f64, energy : 2000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 5f64), ("Steel".into(), 20f64)]
.into_iter().collect() }), ("ItemKitLiquidTankInsulated".into(),
Recipe { tier : MachineTier::TierOne, time : 30f64, energy : 6000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
5f64), ("Silicon".into(), 30f64), ("Steel".into(), 20f64)]
.into_iter().collect() }), ("ItemKitLiquidTurboVolumePump".into(),
Recipe { tier : MachineTier::TierTwo, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 4i64, reagents : vec![("Copper".into(),
4f64), ("Electrum".into(), 5f64), ("Gold".into(), 4f64), ("Steel"
.into(), 5f64)] .into_iter().collect() }),
("ItemKitPassiveLargeRadiatorGas".into(), Recipe { tier :
MachineTier::TierTwo, time : 30f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Invar"
.into(), 5f64), ("Steel".into(), 5f64)] .into_iter().collect() }),
("ItemKitPassiveLargeRadiatorLiquid".into(), Recipe { tier :
MachineTier::TierTwo, time : 30f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Invar"
.into(), 5f64), ("Steel".into(), 5f64)] .into_iter().collect() }),
("ItemKitPassthroughHeatExchanger".into(), Recipe { tier :
MachineTier::TierTwo, time : 30f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Invar".into(), 10f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }), ("ItemKitPipe".into(),
Recipe { tier : MachineTier::TierOne, time : 2f64, energy : 200f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
0.5f64)] .into_iter().collect() }), ("ItemKitPipeLiquid".into(),
Recipe { tier : MachineTier::TierOne, time : 2f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
0.5f64)] .into_iter().collect() }), ("ItemKitPipeOrgan".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 100f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
3f64)] .into_iter().collect() }), ("ItemKitPipeRadiator".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Gold".into(),
3f64), ("Steel".into(), 2f64)] .into_iter().collect() }),
("ItemKitPipeRadiatorLiquid".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Gold".into(), 3f64), ("Steel"
.into(), 2f64)] .into_iter().collect() }), ("ItemKitPipeUtility"
.into(), Recipe { tier : MachineTier::TierOne, time : 15f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 5f64)] .into_iter().collect() }),
("ItemKitPipeUtilityLiquid".into(), Recipe { tier :
MachineTier::TierOne, time : 15f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemKitPlanter".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 10f64)]
.into_iter().collect() }), ("ItemKitPortablesConnector".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
5f64)] .into_iter().collect() }), ("ItemKitPoweredVent".into(),
Recipe { tier : MachineTier::TierTwo, time : 20f64, energy : 1000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Electrum".into(),
5f64), ("Invar".into(), 2f64), ("Steel".into(), 5f64)] .into_iter()
.collect() }), ("ItemKitRegulator".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 1f64), ("Iron".into(), 5f64)] .into_iter().collect() }),
("ItemKitSensor".into(), Recipe { tier : MachineTier::TierOne, time :
10f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 1f64), ("Gold".into(), 1f64),
("Iron".into(), 1f64)] .into_iter().collect() }), ("ItemKitShower"
.into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy :
3000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 5f64), ("Iron".into(), 5f64), ("Silicon"
.into(), 5f64)] .into_iter().collect() }), ("ItemKitSleeper".into(),
Recipe { tier : MachineTier::TierOne, time : 60f64, energy : 6000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
10f64), ("Gold".into(), 10f64), ("Steel".into(), 25f64)] .into_iter()
.collect() }), ("ItemKitSmallDirectHeatExchanger".into(), Recipe {
tier : MachineTier::TierOne, time : 10f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
5f64), ("Steel".into(), 3f64)] .into_iter().collect() }),
("ItemKitStandardChute".into(), Recipe { tier : MachineTier::TierOne,
time : 5f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Constantan".into(), 2f64), ("Electrum".into(),
2f64), ("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemKitSuitStorage".into(), Recipe { tier : MachineTier::TierOne,
time : 30f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 5f64), ("Iron".into(), 15f64),
("Silver".into(), 5f64)] .into_iter().collect() }), ("ItemKitTank"
.into(), Recipe { tier : MachineTier::TierOne, time : 20f64, energy :
2000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 5f64), ("Steel".into(), 20f64)] .into_iter()
.collect() }), ("ItemKitTankInsulated".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 6000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64),
("Silicon".into(), 30f64), ("Steel".into(), 20f64)] .into_iter()
.collect() }), ("ItemKitTurboVolumePump".into(), Recipe { tier :
MachineTier::TierTwo, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 4f64),
("Electrum".into(), 5f64), ("Gold".into(), 4f64), ("Steel".into(),
5f64)] .into_iter().collect() }), ("ItemKitWaterBottleFiller".into(),
Recipe { tier : MachineTier::TierOne, time : 7f64, energy : 620f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
3f64), ("Iron".into(), 5f64), ("Silicon".into(), 8f64)] .into_iter()
.collect() }), ("ItemKitWaterPurifier".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 6000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 20f64), ("Gold"
.into(), 5f64), ("Iron".into(), 10f64)] .into_iter().collect() }),
("ItemLiquidCanisterEmpty".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemLiquidCanisterSmart".into(), Recipe
{ tier : MachineTier::TierTwo, time : 10f64, energy : 1000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
2f64), ("Silicon".into(), 2f64), ("Steel".into(), 15f64)]
.into_iter().collect() }), ("ItemLiquidDrain".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron"
.into(), 5f64)] .into_iter().collect() }), ("ItemLiquidPipeAnalyzer"
.into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Electrum".into(), 2f64), ("Gold".into(), 2f64), ("Iron"
.into(), 2f64)] .into_iter().collect() }), ("ItemLiquidPipeHeater"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 3f64), ("Gold".into(), 3f64), ("Iron".into(),
5f64)] .into_iter().collect() }), ("ItemLiquidPipeValve".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
2f64), ("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemLiquidPipeVolumePump".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold"
.into(), 2f64), ("Iron".into(), 5f64)] .into_iter().collect() }),
("ItemPassiveVent".into(), Recipe { tier : MachineTier::TierOne, time
: 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemPassiveVentInsulated".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Silicon".into(), 5f64),
("Steel".into(), 1f64)] .into_iter().collect() }),
("ItemPipeAnalyizer".into(), Recipe { tier : MachineTier::TierOne,
time : 10f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Electrum".into(), 2f64), ("Gold".into(), 2f64),
("Iron".into(), 2f64)] .into_iter().collect() }), ("ItemPipeCowl"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 3f64)] .into_iter().collect() }), ("ItemPipeDigitalValve"
.into(), Recipe { tier : MachineTier::TierOne, time : 15f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 2f64), ("Invar".into(), 3f64), ("Steel"
.into(), 5f64)] .into_iter().collect() }), ("ItemPipeGasMixer"
.into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 2f64), ("Gold".into(), 2f64), ("Iron".into(),
2f64)] .into_iter().collect() }), ("ItemPipeHeater".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
3f64), ("Gold".into(), 3f64), ("Iron".into(), 5f64)] .into_iter()
.collect() }), ("ItemPipeIgniter".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Electrum".into(), 2f64),
("Iron".into(), 2f64)] .into_iter().collect() }), ("ItemPipeLabel"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemPipeMeter".into(),
Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
2f64), ("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemPipeValve".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 3f64)]
.into_iter().collect() }), ("ItemPipeVolumePump".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
3f64), ("Gold".into(), 2f64), ("Iron".into(), 5f64)] .into_iter()
.collect() }), ("ItemWallCooler".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Gold"
.into(), 1f64), ("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemWallHeater".into(), Recipe { tier : MachineTier::TierOne, time
: 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 3f64), ("Gold".into(), 1f64),
("Iron".into(), 3f64)] .into_iter().collect() }), ("ItemWaterBottle"
.into(), Recipe { tier : MachineTier::TierOne, time : 4f64, energy :
120f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents : vec![("Iron"
.into(), 2f64), ("Silicon".into(), 4f64)] .into_iter().collect() }),
("ItemWaterPipeDigitalValve".into(), Recipe { tier :
MachineTier::TierOne, time : 15f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Invar"
.into(), 3f64), ("Steel".into(), 5f64)] .into_iter().collect() }),
("ItemWaterPipeMeter".into(), Recipe { tier : MachineTier::TierOne,
time : 10f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 3f64)]
.into_iter().collect() }), ("ItemWaterWallCooler".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
3f64), ("Gold".into(), 1f64), ("Iron".into(), 3f64)] .into_iter()
.collect() })
]
.into_iter()
.collect(),
}),
memory: MemoryInfo {
instructions: Some(
vec![
("DeviceSetLock".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>LOCK_STATE</color> | <color=orange>BOOL_8</color> |\r\n| <color=grey>16-63 </color> | <color=grey>UNUSED</color> | <color=grey>48</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |"
.into(), typ : "PrinterInstruction".into(), value : 6i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "LOCK_STATE".into(), typ :
InstructionPartType::Bool8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(48u32) }] .into_iter().collect() }),
("EjectAllReagents".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 8i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() }),
("EjectReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "PrinterInstruction".into(), value : 7i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "REAGENT_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("ExecuteRecipe".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 2i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "PREFAB_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("JumpIfNextInvalid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 4i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("JumpToAddress".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 5i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("MissingRecipeReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 54 TO 62</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY_CEIL</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 9i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((54u32,
Some(62u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY_CEIL".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "REAGENT_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("StackPointer".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESS 63</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>INDEX</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((63u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "INDEX".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("WaitUntilNextValid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 3i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::ReadWrite,
memory_size: 64u32,
},
}
.into(),
);
map.insert(
1441767298i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureHydroponicsStation".into(),
prefab_hash: 1441767298i32,
desc: "".into(),
name: "Hydroponics Station".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Efficiency, MemoryAccess::Read),
(LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::Mature, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Efficiency, MemoryAccess::Read),
(LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::Mature, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Efficiency, MemoryAccess::Read),
(LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::Mature, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Efficiency, MemoryAccess::Read),
(LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::Mature, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Efficiency, MemoryAccess::Read),
(LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::Mature, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Efficiency, MemoryAccess::Read),
(LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::Mature, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (6u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Efficiency, MemoryAccess::Read),
(LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::Mature, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (7u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Efficiency, MemoryAccess::Read),
(LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::Mature, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(),
typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ :
Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant },
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(),
typ : Class::Plant }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1464854517i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureHydroponicsTray".into(),
prefab_hash: 1464854517i32,
desc: "The <link=Agrizero><color=#0080FFFF>Agrizero</color></link> hydroponics tray is the ideal vessel for growing a range of <link=OrganicPage><color=#0080FFFF>plantlife</color></link>. It must be supplied with water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the <link=ThingStructureHarvie><color=green>Harvie</color></link>."
.into(),
name: "Hydroponics Tray".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Fertiliser".into(), typ : Class::Plant }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1841632400i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureHydroponicsTrayData".into(),
prefab_hash: -1841632400i32,
desc: "The <link=Agrizero><color=#0080FFFF>Agrizero</color></link> hydroponics device is the ideal vessel for growing a range of <link=OrganicPage><color=#0080FFFF>plantlife</color></link>. It must be supplied with <link=GasWater><color=#44AD83>Water</color></link> using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the <link=ThingStructureHarvie><color=green>Harvie</color></link>. Note that unlike the <link=ThingStructureHydroponicsTray><color=green>Hydroponics Tray</color></link>, these cannot be placed consecutively as they are considered devices rather than pure pipes. They do, however, allow data interrogation for logic systems."
.into(),
name: "Hydroponics Device".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Efficiency, MemoryAccess::Read),
(LogicSlotType::Health, MemoryAccess::Read), (LogicSlotType::Growth,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::Mature, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Seeding, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Fertiliser".into(), typ : Class::Plant }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::None },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
443849486i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureIceCrusher".into(),
prefab_hash: 443849486i32,
desc: "The <link=Recurso><color=#0080FFFF>Recurso</color></link> KoolAuger converts various ices into their respective <link=GasPage><color=#0080FFFF>gases</color></link> and liquids.\nA remarkably smart and compact sublimation-melting unit, it produces gas or liquid depending on the ice being processed. The upper outlet is gas, the lower for liquid, and while you can attach any pipe you like to either outlet, it will only function if the correct network is attached. It will also only pass gas or liquid into a network if it is powered and turned on.\nIf the KoolAuger is full, it will not accept any further ice until the gas or liquid contents is drained. In this state, it will flash a yellow error state on the activation switch."
.into(),
name: "Ice Crusher".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Import".into(), typ : Class::Ore }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1005491513i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureIgniter".into(),
prefab_hash: 1005491513i32,
desc: "It gets the party started. Especially if that party is an explosive gas mixture."
.into(),
name: "Igniter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1693382705i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInLineTankGas1x1".into(),
prefab_hash: -1693382705i32,
desc: "A small expansion tank that increases the volume of a pipe network."
.into(),
name: "In-Line Tank Small Gas".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
35149429i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInLineTankGas1x2".into(),
prefab_hash: 35149429i32,
desc: "A small expansion tank that increases the volume of a pipe network."
.into(),
name: "In-Line Tank Gas".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
543645499i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInLineTankLiquid1x1".into(),
prefab_hash: 543645499i32,
desc: "A small expansion tank that increases the volume of a pipe network."
.into(),
name: "In-Line Tank Small Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1183969663i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInLineTankLiquid1x2".into(),
prefab_hash: -1183969663i32,
desc: "A small expansion tank that increases the volume of a pipe network."
.into(),
name: "In-Line Tank Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1818267386i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedInLineTankGas1x1".into(),
prefab_hash: 1818267386i32,
desc: "".into(),
name: "Insulated In-Line Tank Small Gas".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-177610944i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedInLineTankGas1x2".into(),
prefab_hash: -177610944i32,
desc: "".into(),
name: "Insulated In-Line Tank Gas".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-813426145i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedInLineTankLiquid1x1".into(),
prefab_hash: -813426145i32,
desc: "".into(),
name: "Insulated In-Line Tank Small Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1452100517i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedInLineTankLiquid1x2".into(),
prefab_hash: 1452100517i32,
desc: "".into(),
name: "Insulated In-Line Tank Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1967711059i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeCorner".into(),
prefab_hash: -1967711059i32,
desc: "Insulated pipes greatly reduce heat loss from gases stored in them."
.into(),
name: "Insulated Pipe (Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-92778058i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeCrossJunction".into(),
prefab_hash: -92778058i32,
desc: "Insulated pipes greatly reduce heat loss from gases stored in them."
.into(),
name: "Insulated Pipe (Cross Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1328210035i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeCrossJunction3".into(),
prefab_hash: 1328210035i32,
desc: "Insulated pipes greatly reduce heat loss from gases stored in them."
.into(),
name: "Insulated Pipe (3-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-783387184i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeCrossJunction4".into(),
prefab_hash: -783387184i32,
desc: "Insulated pipes greatly reduce heat loss from gases stored in them."
.into(),
name: "Insulated Pipe (4-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1505147578i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeCrossJunction5".into(),
prefab_hash: -1505147578i32,
desc: "Insulated pipes greatly reduce heat loss from gases stored in them."
.into(),
name: "Insulated Pipe (5-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1061164284i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeCrossJunction6".into(),
prefab_hash: 1061164284i32,
desc: "Insulated pipes greatly reduce heat loss from gases stored in them."
.into(),
name: "Insulated Pipe (6-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1713710802i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeLiquidCorner".into(),
prefab_hash: 1713710802i32,
desc: "Liquid piping with very low temperature loss or gain.".into(),
name: "Insulated Liquid Pipe (Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1926651727i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeLiquidCrossJunction".into(),
prefab_hash: 1926651727i32,
desc: "Liquid piping with very low temperature loss or gain.".into(),
name: "Insulated Liquid Pipe (3-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
363303270i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeLiquidCrossJunction4".into(),
prefab_hash: 363303270i32,
desc: "Liquid piping with very low temperature loss or gain.".into(),
name: "Insulated Liquid Pipe (4-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1654694384i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeLiquidCrossJunction5".into(),
prefab_hash: 1654694384i32,
desc: "Liquid piping with very low temperature loss or gain.".into(),
name: "Insulated Liquid Pipe (5-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-72748982i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeLiquidCrossJunction6".into(),
prefab_hash: -72748982i32,
desc: "Liquid piping with very low temperature loss or gain.".into(),
name: "Insulated Liquid Pipe (6-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
295678685i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeLiquidStraight".into(),
prefab_hash: 295678685i32,
desc: "Liquid piping with very low temperature loss or gain.".into(),
name: "Insulated Liquid Pipe (Straight)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-532384855i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeLiquidTJunction".into(),
prefab_hash: -532384855i32,
desc: "Liquid piping with very low temperature loss or gain.".into(),
name: "Insulated Liquid Pipe (T Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
2134172356i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeStraight".into(),
prefab_hash: 2134172356i32,
desc: "Insulated pipes greatly reduce heat loss from gases stored in them."
.into(),
name: "Insulated Pipe (Straight)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2076086215i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedPipeTJunction".into(),
prefab_hash: -2076086215i32,
desc: "Insulated pipes greatly reduce heat loss from gases stored in them."
.into(),
name: "Insulated Pipe (T Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-31273349i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedTankConnector".into(),
prefab_hash: -31273349i32,
desc: "".into(),
name: "Insulated Tank Connector".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1602030414i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureInsulatedTankConnectorLiquid".into(),
prefab_hash: -1602030414i32,
desc: "".into(),
name: "Insulated Tank Connector Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Portable Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-2096421875i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureInteriorDoorGlass".into(),
prefab_hash: -2096421875i32,
desc: "0.Operate\n1.Logic".into(),
name: "Interior Door Glass".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
847461335i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureInteriorDoorPadded".into(),
prefab_hash: 847461335i32,
desc: "0.Operate\n1.Logic".into(),
name: "Interior Door Padded".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1981698201i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureInteriorDoorPaddedThin".into(),
prefab_hash: 1981698201i32,
desc: "0.Operate\n1.Logic".into(),
name: "Interior Door Padded Thin".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1182923101i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureInteriorDoorTriangle".into(),
prefab_hash: -1182923101i32,
desc: "0.Operate\n1.Logic".into(),
name: "Interior Door Triangle".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-828056979i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureKlaxon".into(),
prefab_hash: -828056979i32,
desc: "Klaxons allow you to play over 50 announcements and sounds, depending on your <link=LogicPage><color=#0080FFFF>Logic</color></link> set-up. Set the mode to select the output."
.into(),
name: "Klaxon Speaker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::SoundAlert,
MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "None".into()), (1u32, "Alarm2".into()), (2u32, "Alarm3"
.into()), (3u32, "Alarm4".into()), (4u32, "Alarm5".into()),
(5u32, "Alarm6".into()), (6u32, "Alarm7".into()), (7u32, "Music1"
.into()), (8u32, "Music2".into()), (9u32, "Music3".into()),
(10u32, "Alarm8".into()), (11u32, "Alarm9".into()), (12u32,
"Alarm10".into()), (13u32, "Alarm11".into()), (14u32, "Alarm12"
.into()), (15u32, "Danger".into()), (16u32, "Warning".into()),
(17u32, "Alert".into()), (18u32, "StormIncoming".into()), (19u32,
"IntruderAlert".into()), (20u32, "Depressurising".into()),
(21u32, "Pressurising".into()), (22u32, "AirlockCycling".into()),
(23u32, "PowerLow".into()), (24u32, "SystemFailure".into()),
(25u32, "Welcome".into()), (26u32, "MalfunctionDetected".into()),
(27u32, "HaltWhoGoesThere".into()), (28u32, "FireFireFire"
.into()), (29u32, "One".into()), (30u32, "Two".into()), (31u32,
"Three".into()), (32u32, "Four".into()), (33u32, "Five".into()),
(34u32, "Floor".into()), (35u32, "RocketLaunching".into()),
(36u32, "LiftOff".into()), (37u32, "TraderIncoming".into()),
(38u32, "TraderLanded".into()), (39u32, "PressureHigh".into()),
(40u32, "PressureLow".into()), (41u32, "TemperatureHigh".into()),
(42u32, "TemperatureLow".into()), (43u32, "PollutantsDetected"
.into()), (44u32, "HighCarbonDioxide".into()), (45u32, "Alarm1"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-415420281i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureLadder".into(),
prefab_hash: -415420281i32,
desc: "".into(),
name: "Ladder".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1541734993i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureLadderEnd".into(),
prefab_hash: 1541734993i32,
desc: "".into(),
name: "Ladder End".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1230658883i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLargeDirectHeatExchangeGastoGas".into(),
prefab_hash: -1230658883i32,
desc: "Direct Heat Exchangers equalize the temperature of the two input networks."
.into(),
name: "Large Direct Heat Exchanger - Gas + Gas".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1412338038i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLargeDirectHeatExchangeGastoLiquid".into(),
prefab_hash: 1412338038i32,
desc: "Direct Heat Exchangers equalize the temperature of the two input networks."
.into(),
name: "Large Direct Heat Exchanger - Gas + Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
792686502i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLargeDirectHeatExchangeLiquidtoLiquid".into(),
prefab_hash: 792686502i32,
desc: "Direct Heat Exchangers equalize the temperature of the two input networks."
.into(),
name: "Large Direct Heat Exchange - Liquid + Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-566775170i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLargeExtendableRadiator".into(),
prefab_hash: -566775170i32,
desc: "Omptimised for radiating heat in vacuum and low pressure environments. If pointed at the sun it will heat its contents rapidly via solar heating. The panels can fold away to stop all heat radiation/solar heating and protect them from storms."
.into(),
name: "Large Extendable Radiator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.02f32,
radiation_factor: 2f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1351081801i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLargeHangerDoor".into(),
prefab_hash: -1351081801i32,
desc: "1 x 3 modular door piece for building hangar doors.".into(),
name: "Large Hangar Door".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1913391845i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
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 <link=ThingStructureComputer><color=green>Computer</color></link> containing a <link=ThingMotherboardComms><color=green>Communications Motherboard</color></link> motherboard, a <link=ThingLandingpad_CenterPiece01><color=green>Landingpad Center</color></link>, and a <link=ThingStructureVendingMachine><color=green>Vending Machine</color></link>, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic."
.into(),
name: "Large Satellite Dish".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::Horizontal, MemoryAccess::ReadWrite),
(LogicType::Vertical, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::SignalStrength, MemoryAccess::Read),
(LogicType::SignalId, MemoryAccess::Read),
(LogicType::InterrogationProgress, MemoryAccess::Read),
(LogicType::TargetPadIndex, MemoryAccess::ReadWrite),
(LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ,
MemoryAccess::Read), (LogicType::MinimumWattsToContact,
MemoryAccess::Read), (LogicType::WattsReachingContact,
MemoryAccess::Read), (LogicType::ContactTypeId, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::BestContactFilter, MemoryAccess::ReadWrite),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-558953231i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureLaunchMount".into(),
prefab_hash: -558953231i32,
desc: "The first piece to place whern building a rocket. Rockets can be constructed and/or landed here. Each Launch Mount will be allocated a slot on the Space Map and assigned a Location Code."
.into(),
name: "Launch Mount".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
797794350i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLightLong".into(),
prefab_hash: 797794350i32,
desc: "".into(),
name: "Wall Light (Long)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1847265835i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLightLongAngled".into(),
prefab_hash: 1847265835i32,
desc: "".into(),
name: "Wall Light (Long Angled)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
555215790i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLightLongWide".into(),
prefab_hash: 555215790i32,
desc: "".into(),
name: "Wall Light (Long Wide)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1514476632i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLightRound".into(),
prefab_hash: 1514476632i32,
desc: "Description coming.".into(),
name: "Light Round".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1592905386i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLightRoundAngled".into(),
prefab_hash: 1592905386i32,
desc: "Description coming.".into(),
name: "Light Round (Angled)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1436121888i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLightRoundSmall".into(),
prefab_hash: 1436121888i32,
desc: "Description coming.".into(),
name: "Light Round (Small)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1687692899i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidDrain".into(),
prefab_hash: 1687692899i32,
desc: "When connected to power and activated, it pumps liquid from a liquid network into the world."
.into(),
name: "Active Liquid Outlet".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2113838091i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidPipeAnalyzer".into(),
prefab_hash: -2113838091i32,
desc: "".into(),
name: "Liquid Pipe Analyzer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::Volume, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-287495560i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidPipeHeater".into(),
prefab_hash: -287495560i32,
desc: "Adds 1000 joules of heat per tick to the contents of your pipe network."
.into(),
name: "Pipe Heater (Liquid)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-782453061i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
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 {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidPipeRadiator".into(),
prefab_hash: 2072805863i32,
desc: "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added to the liquid within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the liquid in question. Adding multiple radiators will speed up heat transfer."
.into(),
name: "Liquid Pipe Convection Radiator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 1f32,
radiation_factor: 0.75f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
482248766i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidPressureRegulator".into(),
prefab_hash: 482248766i32,
desc: "Regulates the volume ratio of liquid in the output Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty."
.into(),
name: "Liquid Volume Regulator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1098900430i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidTankBig".into(),
prefab_hash: 1098900430i32,
desc: "".into(),
name: "Liquid Tank Big".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1430440215i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidTankBigInsulated".into(),
prefab_hash: -1430440215i32,
desc: "".into(),
name: "Insulated Liquid Tank Big".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1988118157i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidTankSmall".into(),
prefab_hash: 1988118157i32,
desc: "".into(),
name: "Liquid Tank Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
608607718i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidTankSmallInsulated".into(),
prefab_hash: 608607718i32,
desc: "".into(),
name: "Insulated Liquid Tank Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1691898022i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidTankStorage".into(),
prefab_hash: 1691898022i32,
desc: "When connected to a liquid pipe network, the tank storage unit allows you to refill a <link=ThingItemLiquidCanisterEmpty><color=green>Liquid Canister</color></link>, as well as read various atmospheric data from the <link=SlotGasCanister><color=orange>Gas Canister</color></link>. It will not accept gas canisters."
.into(),
name: "Liquid Tank Storage".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Quantity,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Liquid Canister".into(), typ : Class::LiquidCanister }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1051805505i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidTurboVolumePump".into(),
prefab_hash: -1051805505i32,
desc: "Shifts 10 times more liquid than a basic <link=ThingStructureVolumePump><color=green>Volume Pump</color></link>, with a mode that can be set to flow in either direction."
.into(),
name: "Turbo Volume Pump (Liquid)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Right".into()), (1u32, "Left".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1734723642i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidUmbilicalFemale".into(),
prefab_hash: 1734723642i32,
desc: "".into(),
name: "Umbilical Socket (Liquid)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1220870319i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidUmbilicalFemaleSide".into(),
prefab_hash: 1220870319i32,
desc: "".into(),
name: "Umbilical Socket Angle (Liquid)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1798420047i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidUmbilicalMale".into(),
prefab_hash: -1798420047i32,
desc: "0.Left\n1.Center\n2.Right".into(),
name: "Umbilical (Liquid)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1849974453i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidValve".into(),
prefab_hash: 1849974453i32,
desc: "".into(),
name: "Liquid Valve".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-454028979i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLiquidVolumePump".into(),
prefab_hash: -454028979i32,
desc: "".into(),
name: "Liquid Volume Pump".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-647164662i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLockerSmall".into(),
prefab_hash: -647164662i32,
desc: "".into(),
name: "Locker (Small)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
264413729i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicBatchReader".into(),
prefab_hash: 264413729i32,
desc: "".into(),
name: "Batch Reader".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
436888930i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicBatchSlotReader".into(),
prefab_hash: 436888930i32,
desc: "".into(),
name: "Batch Slot Reader".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1415443359i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicBatchWriter".into(),
prefab_hash: 1415443359i32,
desc: "".into(),
name: "Batch Writer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ForceWrite,
MemoryAccess::Write), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
491845673i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicButton".into(),
prefab_hash: 491845673i32,
desc: "".into(),
name: "Button".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1489728908i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicCompare".into(),
prefab_hash: -1489728908i32,
desc: "0.Equals\n1.Greater\n2.Less\n3.NotEquals".into(),
name: "Logic Compare".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, "Less"
.into()), (3u32, "NotEquals".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
554524804i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicDial".into(),
prefab_hash: 554524804i32,
desc: "An assignable dial with up to 1000 modes.".into(),
name: "Dial".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1942143074i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicGate".into(),
prefab_hash: 1942143074i32,
desc: "A <link=LogicPage><color=#0080FFFF>logic</color></link> device that performs a logical operation on one or more binary inputs that produces a single binary output. An input greater than zero is considered true for operations."
.into(),
name: "Logic Gate".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "AND".into()), (1u32, "OR".into()), (2u32, "XOR".into()),
(3u32, "NAND".into()), (4u32, "NOR".into()), (5u32, "XNOR"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
2077593121i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicHashGen".into(),
prefab_hash: 2077593121i32,
desc: "".into(),
name: "Logic Hash Generator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1657691323i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicMath".into(),
prefab_hash: 1657691323i32,
desc: "0.Add\n1.Subtract\n2.Multiply\n3.Divide\n4.Mod\n5.Atan2\n6.Pow\n7.Log"
.into(),
name: "Logic Math".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Add".into()), (1u32, "Subtract".into()), (2u32,
"Multiply".into()), (3u32, "Divide".into()), (4u32, "Mod"
.into()), (5u32, "Atan2".into()), (6u32, "Pow".into()), (7u32,
"Log".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1160020195i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicMathUnary".into(),
prefab_hash: -1160020195i32,
desc: "0.Ceil\n1.Floor\n2.Abs\n3.Log\n4.Exp\n5.Round\n6.Rand\n7.Sqrt\n8.Sin\n9.Cos\n10.Tan\n11.Asin\n12.Acos\n13.Atan\n14.Not"
.into(),
name: "Math Unary".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Ceil".into()), (1u32, "Floor".into()), (2u32, "Abs"
.into()), (3u32, "Log".into()), (4u32, "Exp".into()), (5u32,
"Round".into()), (6u32, "Rand".into()), (7u32, "Sqrt".into()),
(8u32, "Sin".into()), (9u32, "Cos".into()), (10u32, "Tan"
.into()), (11u32, "Asin".into()), (12u32, "Acos".into()), (13u32,
"Atan".into()), (14u32, "Not".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-851746783i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicMemory".into(),
prefab_hash: -851746783i32,
desc: "".into(),
name: "Logic Memory".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
929022276i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicMinMax".into(),
prefab_hash: 929022276i32,
desc: "0.Greater\n1.Less".into(),
name: "Logic Min/Max".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Greater".into()), (1u32, "Less".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
2096189278i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicMirror".into(),
prefab_hash: 2096189278i32,
desc: "".into(),
name: "Logic Mirror".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![].into_iter().collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-345383640i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicReader".into(),
prefab_hash: -345383640i32,
desc: "".into(),
name: "Logic Reader".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-124308857i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicReagentReader".into(),
prefab_hash: -124308857i32,
desc: "".into(),
name: "Reagent Reader".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
876108549i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicRocketDownlink".into(),
prefab_hash: 876108549i32,
desc: "".into(),
name: "Logic Rocket Downlink".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
546002924i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicRocketUplink".into(),
prefab_hash: 546002924i32,
desc: "".into(),
name: "Logic Uplink".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1822736084i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicSelect".into(),
prefab_hash: 1822736084i32,
desc: "0.Equals\n1.Greater\n2.Less\n3.NotEquals".into(),
name: "Logic Select".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, "Less"
.into()), (3u32, "NotEquals".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Data, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-767867194i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicSlotReader".into(),
prefab_hash: -767867194i32,
desc: "".into(),
name: "Slot Reader".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
873418029i32,
StructureLogicDeviceMemoryTemplate {
templateType: "StructureLogicDeviceMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicSorter".into(),
prefab_hash: 873418029i32,
desc: "Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the <link=SlotImport><color=orange>Import</color></link> Slot, the stack is checked and if result is true the thing is moved to the <link=SlotExport2><color=orange>Export 2</color></link> slot, otherwise it is moved to the <link=SlotExport><color=orange>Export</color></link> slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true."
.into(),
name: "Logic Sorter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "All".into()), (1u32, "Any".into()), (2u32, "None".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }, SlotInfo { name : "Export 2"
.into(), typ : Class::None }, SlotInfo { name : "Data Disk".into(), typ :
Class::DataDisk }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Output2 }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
memory: MemoryInfo {
instructions: Some(
vec![
("FilterPrefabHashEquals".into(), Instruction { description :
"<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "SorterInstruction".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "PREFAB_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("FilterPrefabHashNotEquals".into(), Instruction { description :
"<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "SorterInstruction".into(), value : 2i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "PREFAB_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("FilterQuantityCompare".into(), Instruction { description :
"<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>CONDITION_OPERATION</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-31 </color> | <color=yellow>QUANTITY</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>32-63 </color> | <color=grey>UNUSED</color> | <color=grey>32</color> |</color>"
.into(), description_stripped :
"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | QUANTITY | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |"
.into(), typ : "SorterInstruction".into(), value : 5i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "CONDITION_OPERATION".into(),
typ : InstructionPartType::Byte8 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 31u32))
}, name : "QUANTITY".into(), typ : InstructionPartType::UShort16
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((32u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(32u32) }] .into_iter().collect() }),
("FilterSlotTypeCompare".into(), Instruction { description :
"<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>CONDITION_OPERATION</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-31 </color> | <color=yellow>SLOT_TYPE</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>32-63 </color> | <color=grey>UNUSED</color> | <color=grey>32</color> |</color>"
.into(), description_stripped :
"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SLOT_TYPE | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |"
.into(), typ : "SorterInstruction".into(), value : 4i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "CONDITION_OPERATION".into(),
typ : InstructionPartType::Byte8 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 31u32))
}, name : "SLOT_TYPE".into(), typ : InstructionPartType::UShort16
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((32u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(32u32) }] .into_iter().collect() }),
("FilterSortingClassCompare".into(), Instruction { description :
"<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>CONDITION_OPERATION</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-31 </color> | <color=yellow>SORTING_CLASS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>32-63 </color> | <color=grey>UNUSED</color> | <color=grey>32</color> |</color>"
.into(), description_stripped :
"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SORTING_CLASS | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |"
.into(), typ : "SorterInstruction".into(), value : 3i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "CONDITION_OPERATION".into(),
typ : InstructionPartType::Byte8 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 31u32))
}, name : "SORTING_CLASS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((32u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(32u32) }] .into_iter().collect() }),
("LimitNextExecutionByCount".into(), Instruction { description :
"<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>COUNT</color> | <color=orange>UINT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | COUNT | UINT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "SorterInstruction".into(), value : 6i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "COUNT".into(), typ :
InstructionPartType::UInt32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::ReadWrite,
memory_size: 32u32,
},
}
.into(),
);
map.insert(
1220484876i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicSwitch".into(),
prefab_hash: 1220484876i32,
desc: "".into(),
name: "Lever".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
321604921i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicSwitch2".into(),
prefab_hash: 321604921i32,
desc: "".into(),
name: "Switch".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-693235651i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicTransmitter".into(),
prefab_hash: -693235651i32,
desc: "Connects to <pos=300><link=ThingStructureLogicTransmitter><color=green>Logic Transmitter</color></link>"
.into(),
name: "Logic Transmitter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![].into_iter().collect(),
modes: Some(
vec![(0u32, "Passive".into()), (1u32, "Active".into())]
.into_iter()
.collect(),
),
transmission_receiver: true,
wireless_logic: true,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Data, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1326019434i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicWriter".into(),
prefab_hash: -1326019434i32,
desc: "".into(),
name: "Logic Writer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ForceWrite,
MemoryAccess::Write), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1321250424i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureLogicWriterSwitch".into(),
prefab_hash: -1321250424i32,
desc: "".into(),
name: "Logic Writer Switch".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ForceWrite, MemoryAccess::Write),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1808154199i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureManualHatch".into(),
prefab_hash: -1808154199i32,
desc: "Can be welded using a <link=ThingItemWeldingTorch><color=green>Welding Torch</color></link> or <link=ThingItemArcWelder><color=green>Arc Welder</color></link> to lock it in the current state. Use the welder again to unlock."
.into(),
name: "Manual Hatch".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1918215845i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureMediumConvectionRadiator".into(),
prefab_hash: -1918215845i32,
desc: "A stand-alone radiator unit optimized for exchanging heat with its surrounding atmosphere."
.into(),
name: "Medium Convection Radiator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 1.25f32,
radiation_factor: 0.4f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1169014183i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureMediumConvectionRadiatorLiquid".into(),
prefab_hash: -1169014183i32,
desc: "A stand-alone liquid radiator unit optimized for exchanging heat with its surrounding atmosphere."
.into(),
name: "Medium Convection Radiator Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 1.25f32,
radiation_factor: 0.4f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-566348148i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureMediumHangerDoor".into(),
prefab_hash: -566348148i32,
desc: "1 x 2 modular door piece for building hangar doors.".into(),
name: "Medium Hangar Door".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Operate".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-975966237i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureMediumRadiator".into(),
prefab_hash: -975966237i32,
desc: "A stand-alone radiator unit optimized for radiating heat in vacuums."
.into(),
name: "Medium Radiator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.2f32,
radiation_factor: 4f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1141760613i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureMediumRadiatorLiquid".into(),
prefab_hash: -1141760613i32,
desc: "A stand-alone liquid radiator unit optimized for radiating heat in vacuums."
.into(),
name: "Medium Radiator Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.2f32,
radiation_factor: 4f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1093860567i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureMediumRocketGasFuelTank".into(),
prefab_hash: -1093860567i32,
desc: "".into(),
name: "Gas Capsule Tank Medium".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1143639539i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureMediumRocketLiquidFuelTank".into(),
prefab_hash: 1143639539i32,
desc: "".into(),
name: "Liquid Capsule Tank Medium".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Pressure, MemoryAccess::Read), (LogicType::Temperature,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1713470563i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureMotionSensor".into(),
prefab_hash: -1713470563i32,
desc: "Originally developed to monitor dance marathons, the motion sensor can also be connected to <link=LogicPage><color=#0080FFFF>Logic</color></link> systems for security purposes, automatic lighting, doors and various other applications.\nThe sensor activates whenever a player enters the grid it is placed on."
.into(),
name: "Motion Sensor".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Quantity,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1898243702i32,
StructureCircuitHolderTemplate {
templateType: "StructureCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "StructureNitrolyzer".into(),
prefab_hash: 1898243702i32,
desc: "This device is used to create <link=GasNitrousOxide><color=#44AD83>Nitrous Oxide</color></link> from <link=GasOxygen><color=#44AD83>Oxygen</color></link>, <link=GasNitrogen><color=#44AD83>Nitrogen</color></link>, and a large amount of energy. The process does not completely transform all the available gas at once, so the output is a mix of all three gasses, which may need further processing. More NOS will be created, if the gas inside the machine is close to a 1/1 ratio of Oxygen to Nitrogen. The second gas input line in optional, and not required if the gas is pre mixed."
.into(),
name: "Nitrolyzer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::PressureInput, MemoryAccess::Read),
(LogicType::TemperatureInput, MemoryAccess::Read),
(LogicType::RatioOxygenInput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioNitrogenInput, MemoryAccess::Read),
(LogicType::RatioPollutantInput, MemoryAccess::Read),
(LogicType::RatioVolatilesInput, MemoryAccess::Read),
(LogicType::RatioWaterInput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideInput, MemoryAccess::Read),
(LogicType::TotalMolesInput, MemoryAccess::Read),
(LogicType::PressureInput2, MemoryAccess::Read),
(LogicType::TemperatureInput2, MemoryAccess::Read),
(LogicType::RatioOxygenInput2, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideInput2, MemoryAccess::Read),
(LogicType::RatioNitrogenInput2, MemoryAccess::Read),
(LogicType::RatioPollutantInput2, MemoryAccess::Read),
(LogicType::RatioVolatilesInput2, MemoryAccess::Read),
(LogicType::RatioWaterInput2, MemoryAccess::Read),
(LogicType::RatioNitrousOxideInput2, MemoryAccess::Read),
(LogicType::TotalMolesInput2, MemoryAccess::Read),
(LogicType::PressureOutput, MemoryAccess::Read),
(LogicType::TemperatureOutput, MemoryAccess::Read),
(LogicType::RatioOxygenOutput, MemoryAccess::Read),
(LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioPollutantOutput, MemoryAccess::Read),
(LogicType::RatioVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioWaterOutput, MemoryAccess::Read),
(LogicType::RatioNitrousOxideOutput, MemoryAccess::Read),
(LogicType::TotalMolesOutput, MemoryAccess::Read),
(LogicType::CombustionInput, MemoryAccess::Read),
(LogicType::CombustionInput2, MemoryAccess::Read),
(LogicType::CombustionOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenInput2, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenInput, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenInput2, MemoryAccess::Read),
(LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesInput2, MemoryAccess::Read),
(LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioSteamInput, MemoryAccess::Read),
(LogicType::RatioSteamInput2, MemoryAccess::Read),
(LogicType::RatioSteamOutput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideInput2, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantInput, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantInput2, MemoryAccess::Read),
(LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideInput2, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Idle".into()), (1u32, "Active".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Programmable Chip".into(), typ :
Class::ProgrammableChip }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input2 }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: Some(2u32),
has_activate_state: true,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
322782515i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureOccupancySensor".into(),
prefab_hash: 322782515i32,
desc: "Will be triggered if there is a player in the same room as the sensor. The quantity variable will show the number of players. You can use configure it to only detect players who hold the correct Access Card using a <link=ThingCartridgeAccessController><color=green>Cartridge (Access Controller)</color></link> in a <link=ThingItemTablet><color=green>Handheld Tablet</color></link>. This sensor only works when placed in a room."
.into(),
name: "Occupancy Sensor".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Activate, MemoryAccess::Read), (LogicType::Quantity,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1794932560i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureOverheadShortCornerLocker".into(),
prefab_hash: -1794932560i32,
desc: "".into(),
name: "Overhead Corner Locker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1468249454i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureOverheadShortLocker".into(),
prefab_hash: 1468249454i32,
desc: "".into(),
name: "Overhead Locker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (6u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (7u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (8u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (9u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
2066977095i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePassiveLargeRadiatorGas".into(),
prefab_hash: 2066977095i32,
desc: "Has been replaced by <link=ThingStructureMediumConvectionRadiator><color=green>Medium Convection Radiator</color></link>."
.into(),
name: "Medium Convection Radiator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 1f32,
radiation_factor: 0.4f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
24786172i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePassiveLargeRadiatorLiquid".into(),
prefab_hash: 24786172i32,
desc: "Has been replaced by <link=ThingStructureMediumConvectionRadiatorLiquid><color=green>Medium Convection Radiator Liquid</color></link>."
.into(),
name: "Medium Convection Radiator Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 1f32,
radiation_factor: 0.4f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1812364811i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePassiveLiquidDrain".into(),
prefab_hash: 1812364811i32,
desc: "Moves liquids from a pipe network to the world atmosphere."
.into(),
name: "Passive Liquid Drain".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
335498166i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePassiveVent".into(),
prefab_hash: 335498166i32,
desc: "Passive vents allow gases to move into and out of pipe networks, which are closed systems unless connected to a device or structure. Passive vents are not powered, merely an aperture, essentially turning an enclosed space into part of the pipe network. "
.into(),
name: "Passive Vent".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1363077139i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePassiveVentInsulated".into(),
prefab_hash: 1363077139i32,
desc: "".into(),
name: "Insulated Passive Vent".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1674187440i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePassthroughHeatExchangerGasToGas".into(),
prefab_hash: -1674187440i32,
desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures."
.into(),
name: "CounterFlow Heat Exchanger - Gas + Gas".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input2 }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Output2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1928991265i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePassthroughHeatExchangerGasToLiquid".into(),
prefab_hash: 1928991265i32,
desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures."
.into(),
name: "CounterFlow Heat Exchanger - Gas + Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input2 },
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1472829583i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePassthroughHeatExchangerLiquidToLiquid".into(),
prefab_hash: -1472829583i32,
desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exchange of temperatures."
.into(),
name: "CounterFlow Heat Exchanger - Liquid + Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input2 },
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1434523206i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThickLandscapeLarge".into(),
prefab_hash: -1434523206i32,
desc: "".into(),
name: "Picture Frame Thick Landscape Large".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2041566697i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThickLandscapeSmall".into(),
prefab_hash: -2041566697i32,
desc: "".into(),
name: "Picture Frame Thick Landscape Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
950004659i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThickMountLandscapeLarge".into(),
prefab_hash: 950004659i32,
desc: "".into(),
name: "Picture Frame Thick Landscape Large".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
347154462i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThickMountLandscapeSmall".into(),
prefab_hash: 347154462i32,
desc: "".into(),
name: "Picture Frame Thick Landscape Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1459641358i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThickMountPortraitLarge".into(),
prefab_hash: -1459641358i32,
desc: "".into(),
name: "Picture Frame Thick Mount Portrait Large".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2066653089i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThickMountPortraitSmall".into(),
prefab_hash: -2066653089i32,
desc: "".into(),
name: "Picture Frame Thick Mount Portrait Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1686949570i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThickPortraitLarge".into(),
prefab_hash: -1686949570i32,
desc: "".into(),
name: "Picture Frame Thick Portrait Large".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1218579821i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThickPortraitSmall".into(),
prefab_hash: -1218579821i32,
desc: "".into(),
name: "Picture Frame Thick Portrait Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1418288625i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThinLandscapeLarge".into(),
prefab_hash: -1418288625i32,
desc: "".into(),
name: "Picture Frame Thin Landscape Large".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2024250974i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThinLandscapeSmall".into(),
prefab_hash: -2024250974i32,
desc: "".into(),
name: "Picture Frame Thin Landscape Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1146760430i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThinMountLandscapeLarge".into(),
prefab_hash: -1146760430i32,
desc: "".into(),
name: "Picture Frame Thin Landscape Large".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1752493889i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThinMountLandscapeSmall".into(),
prefab_hash: -1752493889i32,
desc: "".into(),
name: "Picture Frame Thin Landscape Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1094895077i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThinMountPortraitLarge".into(),
prefab_hash: 1094895077i32,
desc: "".into(),
name: "Picture Frame Thin Portrait Large".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1835796040i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThinMountPortraitSmall".into(),
prefab_hash: 1835796040i32,
desc: "".into(),
name: "Picture Frame Thin Portrait Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1212777087i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThinPortraitLarge".into(),
prefab_hash: 1212777087i32,
desc: "".into(),
name: "Picture Frame Thin Portrait Large".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1684488658i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePictureFrameThinPortraitSmall".into(),
prefab_hash: 1684488658i32,
desc: "".into(),
name: "Picture Frame Thin Portrait Small".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
435685051i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeAnalysizer".into(),
prefab_hash: 435685051i32,
desc: "Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {<link=ExMin><color=#0080FFFF>ExMin</color></link> engineer, the pipe analyzer is essentially a more advanced version of the <link=ThingStructurePipeMeter><color=green>Pipe Meter</color></link>.\nDisplaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a <link=ThingStructureConsole><color=green>Console</color></link> or <link=ThingStructureComputer><color=green>Computer</color></link> via a {<link=LogicPage><color=#0080FFFF>Logic</color></link> system."
.into(),
name: "Pipe Analyzer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::Volume, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1785673561i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeCorner".into(),
prefab_hash: -1785673561i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeCorner><color=green>Insulated Pipe (Corner)</color></link> using an <link=ThingItemKitInsulatedPipe><color=green>Kit (Insulated Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Pipe (Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
465816159i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeCowl".into(),
prefab_hash: 465816159i32,
desc: "".into(),
name: "Pipe Cowl".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1405295588i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeCrossJunction".into(),
prefab_hash: -1405295588i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeCrossJunction><color=green>Insulated Pipe (Cross Junction)</color></link> using an <link=ThingItemKitInsulatedPipe><color=green>Kit (Insulated Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Pipe (Cross Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
2038427184i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeCrossJunction3".into(),
prefab_hash: 2038427184i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeCrossJunction3><color=green>Insulated Pipe (3-Way Junction)</color></link> using an <link=ThingItemKitInsulatedPipe><color=green>Kit (Insulated Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Pipe (3-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-417629293i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeCrossJunction4".into(),
prefab_hash: -417629293i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeCrossJunction4><color=green>Insulated Pipe (4-Way Junction)</color></link> using an <link=ThingItemKitInsulatedPipe><color=green>Kit (Insulated Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Pipe (4-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1877193979i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeCrossJunction5".into(),
prefab_hash: -1877193979i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeCrossJunction5><color=green>Insulated Pipe (5-Way Junction)</color></link> using an <link=ThingItemKitInsulatedPipe><color=green>Kit (Insulated Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Pipe (5-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
152378047i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeCrossJunction6".into(),
prefab_hash: 152378047i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeCrossJunction6><color=green>Insulated Pipe (6-Way Junction)</color></link> using an <link=ThingItemKitInsulatedPipe><color=green>Kit (Insulated Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Pipe (6-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-419758574i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeHeater".into(),
prefab_hash: -419758574i32,
desc: "Adds 1000 joules of heat per tick to the contents of your pipe network."
.into(),
name: "Pipe Heater (Gas)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1286441942i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeIgniter".into(),
prefab_hash: 1286441942i32,
desc: "Ignites the atmosphere inside the attached pipe network.".into(),
name: "Pipe Igniter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2068497073i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeInsulatedLiquidCrossJunction".into(),
prefab_hash: -2068497073i32,
desc: "Liquid piping with very low temperature loss or gain.".into(),
name: "Insulated Liquid Pipe (Cross Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-999721119i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeLabel".into(),
prefab_hash: -999721119i32,
desc: "As its perspicacious name suggests, the pipe label is designed to be attached to a straight stretch of pipe. Users can then label the label with the <link=ThingItemLabeller><color=green>Labeller</color></link>."
.into(),
name: "Pipe Label".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1856720921i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeLiquidCorner".into(),
prefab_hash: -1856720921i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeLiquidCorner><color=green>Insulated Liquid Pipe (Corner)</color></link> using an <link=ThingItemKitInsulatedLiquidPipe><color=green>Kit (Insulated Liquid Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Liquid Pipe (Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1848735691i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeLiquidCrossJunction".into(),
prefab_hash: 1848735691i32,
desc: "You can upgrade this pipe to an <link=ThingStructurePipeInsulatedLiquidCrossJunction><color=green>Insulated Liquid Pipe (Cross Junction)</color></link> using an <link=ThingItemKitInsulatedLiquidPipe><color=green>Kit (Insulated Liquid Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Liquid Pipe (Cross Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1628087508i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeLiquidCrossJunction3".into(),
prefab_hash: 1628087508i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeLiquidCrossJunction3><color=green><N:EN:StructureInsulatedPipeLiquidCrossJunction3></color></link> using an <link=ThingItemKitInsulatedLiquidPipe><color=green>Kit (Insulated Liquid Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Liquid Pipe (3-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-9555593i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeLiquidCrossJunction4".into(),
prefab_hash: -9555593i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeLiquidCrossJunction4><color=green>Insulated Liquid Pipe (4-Way Junction)</color></link> using an <link=ThingItemKitInsulatedLiquidPipe><color=green>Kit (Insulated Liquid Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Liquid Pipe (4-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2006384159i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeLiquidCrossJunction5".into(),
prefab_hash: -2006384159i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeLiquidCrossJunction5><color=green>Insulated Liquid Pipe (5-Way Junction)</color></link> using an <link=ThingItemKitInsulatedLiquidPipe><color=green>Kit (Insulated Liquid Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Liquid Pipe (5-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
291524699i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeLiquidCrossJunction6".into(),
prefab_hash: 291524699i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeLiquidCrossJunction6><color=green>Insulated Liquid Pipe (6-Way Junction)</color></link> using an <link=ThingItemKitInsulatedLiquidPipe><color=green>Kit (Insulated Liquid Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Liquid Pipe (6-Way Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
667597982i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeLiquidStraight".into(),
prefab_hash: 667597982i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeLiquidStraight><color=green>Insulated Liquid Pipe (Straight)</color></link> using an <link=ThingItemKitInsulatedLiquidPipe><color=green>Kit (Insulated Liquid Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Liquid Pipe (Straight)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
262616717i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeLiquidTJunction".into(),
prefab_hash: 262616717i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeLiquidTJunction><color=green>Insulated Liquid Pipe (T Junction)</color></link> using an <link=ThingItemKitInsulatedLiquidPipe><color=green>Kit (Insulated Liquid Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Liquid Pipe (T Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1798362329i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeMeter".into(),
prefab_hash: -1798362329i32,
desc: "While the Stationeers program has, thus far, inspired little in the way of classical poetry, the following haiku was found etched, ironically, on a piece of pipe wreckage found on Vulcan:\n\"Humble pipe meter\nspeaks the truth, transmits pressure\nwithin any pipe\""
.into(),
name: "Pipe Meter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1580412404i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeOneWayValve".into(),
prefab_hash: 1580412404i32,
desc: "The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.\n"
.into(),
name: "One Way Valve (Gas)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1305252611i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeOrgan".into(),
prefab_hash: 1305252611i32,
desc: "The pipe organ can be attached to one end of a <link=ThingItemPipeValve><color=green>Kit (Pipe Valve)</color></link>. The length of the pipe after the pipe organ changes the pitch of the note it will play when the valve is opened. Use <link=LogicPage><color=#0080FFFF>Logic</color></link> to open and close the valves to create some custom tunes for your base or an audible warning."
.into(),
name: "Pipe Organ".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
1696603168i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeRadiator".into(),
prefab_hash: 1696603168i32,
desc: "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added the gas within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the gas in question. Adding multiple radiators will speed up heat transfer."
.into(),
name: "Pipe Convection Radiator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 1f32,
radiation_factor: 0.75f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-399883995i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeRadiatorFlat".into(),
prefab_hash: -399883995i32,
desc: "A pipe mounted radiator optimized for radiating heat in vacuums."
.into(),
name: "Pipe Radiator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.2f32,
radiation_factor: 3f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
2024754523i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeRadiatorFlatLiquid".into(),
prefab_hash: 2024754523i32,
desc: "A liquid pipe mounted radiator optimized for radiating heat in vacuums."
.into(),
name: "Pipe Radiator Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.2f32,
radiation_factor: 3f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
73728932i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeStraight".into(),
prefab_hash: 73728932i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeStraight><color=green>Insulated Pipe (Straight)</color></link> using an <link=ThingItemKitInsulatedPipe><color=green>Kit (Insulated Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Pipe (Straight)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-913817472i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePipeTJunction".into(),
prefab_hash: -913817472i32,
desc: "You can upgrade this pipe to an <link=ThingStructureInsulatedPipeTJunction><color=green>Insulated Pipe (T Junction)</color></link> using an <link=ThingItemKitInsulatedPipe><color=green>Kit (Insulated Pipe)</color></link> and a <link=ThingItemWrench><color=green>Wrench</color></link>."
.into(),
name: "Pipe (T Junction)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1125641329i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructurePlanter".into(),
prefab_hash: -1125641329i32,
desc: "A small planter for decorative or hydroponic purposes. Can be connected to <link=GasWater><color=#44AD83>Water</color></link>, or watered manually using a <link=ThingItemWaterBottle><color=green>Water Bottle</color></link> or <link=ThingItemGasCanisterWater><color=green>Liquid Canister (Water)</color></link>."
.into(),
name: "Planter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { name :
"Plant".into(), typ : Class::Plant }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1559586682i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructurePlatformLadderOpen".into(),
prefab_hash: 1559586682i32,
desc: "".into(),
name: "Ladder Platform".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
989835703i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructurePlinth".into(),
prefab_hash: 989835703i32,
desc: "".into(),
name: "Plinth".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![SlotInfo { name : "".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-899013427i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePortablesConnector".into(),
prefab_hash: -899013427i32,
desc: "".into(),
name: "Portables Connector".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-782951720i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePowerConnector".into(),
prefab_hash: -782951720i32,
desc: "Attaches a <link=ThingItemKitDynamicGenerator><color=green>Kit (Portable Generator)</color></link> to a power network."
.into(),
name: "Power Connector".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Portable Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-65087121i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePowerTransmitter".into(),
prefab_hash: -65087121i32,
desc: "The <link=Norsec><color=#0080FFFF>Norsec</color></link> Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter\'s collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output."
.into(),
name: "Microwave Power Transmitter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read),
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::PowerPotential,
MemoryAccess::Read), (LogicType::PowerActual, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PositionX, MemoryAccess::Read),
(LogicType::PositionY, MemoryAccess::Read), (LogicType::PositionZ,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-327468845i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePowerTransmitterOmni".into(),
prefab_hash: -327468845i32,
desc: "".into(),
name: "Power Transmitter Omni".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1195820278i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePowerTransmitterReceiver".into(),
prefab_hash: 1195820278i32,
desc: "The <link=Norsec><color=#0080FFFF>Norsec</color></link> Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter\'s collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.Connects to <pos=300><link=ThingStructureLogicTransmitter><color=green>Logic Transmitter</color></link>"
.into(),
name: "Microwave Power Receiver".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read),
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::PowerPotential,
MemoryAccess::Read), (LogicType::PowerActual, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PositionX, MemoryAccess::Read),
(LogicType::PositionY, MemoryAccess::Read), (LogicType::PositionZ,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: true,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
101488029i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePowerUmbilicalFemale".into(),
prefab_hash: 101488029i32,
desc: "".into(),
name: "Umbilical Socket (Power)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1922506192i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePowerUmbilicalFemaleSide".into(),
prefab_hash: 1922506192i32,
desc: "".into(),
name: "Umbilical Socket Angle (Power)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1529453938i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePowerUmbilicalMale".into(),
prefab_hash: 1529453938i32,
desc: "0.Left\n1.Center\n2.Right".into(),
name: "Umbilical (Power)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Left".into()), (1u32, "Center".into()), (2u32, "Right"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
938836756i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePoweredVent".into(),
prefab_hash: 938836756i32,
desc: "Great for moving large quantities of air into a pipe network. Its primary purpose is for the creation of multi-grid airlocks. It can effeciently pull a vacuum on a small to medium sized room."
.into(),
name: "Powered Vent".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::PressureExternal, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Outward".into()), (1u32, "Inward".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-785498334i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePoweredVentLarge".into(),
prefab_hash: -785498334i32,
desc: "For building large scale airlock systems and pressurised hangers, a bigger and bolder version of the <link=ThingStructurePoweredVent><color=green>Powered Vent</color></link> that can effeciently pull a vacuum in large room."
.into(),
name: "Powered Vent Large".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::PressureExternal, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Outward".into()), (1u32, "Inward".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
23052817i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePressurantValve".into(),
prefab_hash: 23052817i32,
desc: "Pumps gas into a liquid pipe in order to raise the pressure"
.into(),
name: "Pressurant Valve".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-624011170i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePressureFedGasEngine".into(),
prefab_hash: -624011170i32,
desc: "Inefficient but very powerful, the Pressure Fed Gas Engine moves gas from each of its two inputs based on the pressure of the input pipes. Control the mixing ratio of fuels by tweaking the input pressures to target a 2:1 mix of <link=GasVolatiles><color=#44AD83>Volatiles</color></link> to <link=GasOxygen><color=#44AD83>Oxygen</color></link> gas. Chilling propellant gasses or using <link=GasNitrousOxide><color=#44AD83>Nitrous Oxide</color></link> as an oxydizer will result in even higher thrust outputs."
.into(),
name: "Pressure Fed Gas Engine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::Throttle, MemoryAccess::ReadWrite),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::PassedMoles, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input2 }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
379750958i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePressureFedLiquidEngine".into(),
prefab_hash: 379750958i32,
desc: "Highly efficient and powerful, the Pressure Fed Liquid Engine is a challenging engine to run in a stable configuration. Liquid is pulled from the input into the engine based on the input gas pressure. Some gas is also moved in this process so Stationeers will need to devise a system to maintain a high gas pressure in the liquid input pipe. The second liquid pipe connection is an optional heat-exchanger connection which exchanges heat between the pipes contents and the engine bell, the Setting variable drives the effectiveness of the heat-exchanger."
.into(),
name: "Pressure Fed Liquid Engine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::Throttle, MemoryAccess::ReadWrite),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::PassedMoles, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input2 },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2008706143i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePressurePlateLarge".into(),
prefab_hash: -2008706143i32,
desc: "".into(),
name: "Trigger Plate (Large)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1269458680i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePressurePlateMedium".into(),
prefab_hash: 1269458680i32,
desc: "".into(),
name: "Trigger Plate (Medium)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1536471028i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePressurePlateSmall".into(),
prefab_hash: -1536471028i32,
desc: "".into(),
name: "Trigger Plate (Small)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
209854039i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePressureRegulator".into(),
prefab_hash: 209854039i32,
desc: "Controlling the flow of gas between two pipe networks, pressure regulators shift gas until a set pressure on the outlet side is achieved, or the gas supply is exhausted. The back pressure regulator, by contrast, will only operate when pressure on the intake side exceeds the set value. With a max pressure of over 20,000kPa, it requires power to operate."
.into(),
name: "Pressure Regulator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
568800213i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureProximitySensor".into(),
prefab_hash: 568800213i32,
desc: "Will be triggered if there is a player in the range of the sensor (as defined by the setting dial). The quantity variable will show the number of players. You can configure the sensor to only detect players who hold the correct Access Card using a <link=ThingCartridgeAccessController><color=green>Cartridge (Access Controller)</color></link> in a <link=ThingItemTablet><color=green>Handheld Tablet</color></link>."
.into(),
name: "Proximity Sensor".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Activate, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Quantity, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2031440019i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePumpedLiquidEngine".into(),
prefab_hash: -2031440019i32,
desc: "Liquid propellants bring greater efficiencies with Pumped Liquid Engine. Two inputs are provided so Stationeers can seperate their fuels, the Setting variable controls the mixing ratio of the inputs. The engine is designed to run on <link=GasLiquidVolatiles><color=#44AD83>Liquid Volatiles</color></link> and <link=GasLiquidOxygen><color=#44AD83>Liquid Oxygen</color></link>, some Stationeers have reported excessive thrust values by switching to <link=GasLiquidNitrousOxide><color=#44AD83>Liquid Nitrous Oxide</color></link>"
.into(),
name: "Pumped Liquid Engine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::Throttle, MemoryAccess::ReadWrite),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::PassedMoles, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::None },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-737232128i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructurePurgeValve".into(),
prefab_hash: -737232128i32,
desc: "Allows for removal of pressurant gas and evaporated liquids from a liquid pipe. Similar in function to a <link=ThingStructureBackPressureRegulator><color=green>Back Pressure Regulator</color></link> the <link=ThingStructurePurgeValve><color=green>Purge Valve</color></link> moves gas from the input liquid pipe to the output gas pipe aiming to keep the pressure of the input at the target setting."
.into(),
name: "Purge Valve".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1756913871i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureRailing".into(),
prefab_hash: -1756913871i32,
desc: "\"Safety third.\"".into(),
name: "Railing Industrial (Type 1)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1633947337i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureRecycler".into(),
prefab_hash: -1633947337i32,
desc: "A device for collecting the raw resources while destroying an item. Produces <link=ThingItemReagentMix><color=green>Reagent Mix</color></link> containing packages of reagents. Pass these through the <link=ThingStructureCentrifuge><color=green>Centrifuge</color></link> to gain back the source ores. Plants and organic matter passed through will create Biomass, which when passed through the <link=ThingStructureCentrifuge><color=green>Centrifuge</color></link> will produce <link=ThingItemBiomass><color=green>Biomass</color></link>."
.into(),
name: "Recycler".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Reagents, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: true,
},
}
.into(),
);
map.insert(
-1577831321i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureRefrigeratedVendingMachine".into(),
prefab_hash: -1577831321i32,
desc: "The refrigerated OmniKool vending machine is an advanced version of the standard <link=ThingStructureVendingMachine><color=green>Vending Machine</color></link>, which maintains an optimum pressure and constant temperature of -130 degrees C, to prevent food spoilage. It can hold up to 100 stacks.\nThe OmniKool also has an in-built <link=ThingStructureStacker><color=green>Stacker</color></link>, allowing players to set the stack sizes of any items ADDED to the device. The unit\'s default stack size is 50.\nNOTE: altering stack sizes DOES NOT update existing stacks within the machine, only those subsequently added. "
.into(),
name: "Refrigerated Vending Machine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![]
.into_iter().collect()), (4u32, vec![] .into_iter().collect()),
(5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter()
.collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![]
.into_iter().collect()), (9u32, vec![] .into_iter().collect()),
(10u32, vec![] .into_iter().collect()), (11u32, vec![] .into_iter()
.collect()), (12u32, vec![] .into_iter().collect()), (13u32, vec![]
.into_iter().collect()), (14u32, vec![] .into_iter().collect()),
(15u32, vec![] .into_iter().collect()), (16u32, vec![] .into_iter()
.collect()), (17u32, vec![] .into_iter().collect()), (18u32, vec![]
.into_iter().collect()), (19u32, vec![] .into_iter().collect()),
(20u32, vec![] .into_iter().collect()), (21u32, vec![] .into_iter()
.collect()), (22u32, vec![] .into_iter().collect()), (23u32, vec![]
.into_iter().collect()), (24u32, vec![] .into_iter().collect()),
(25u32, vec![] .into_iter().collect()), (26u32, vec![] .into_iter()
.collect()), (27u32, vec![] .into_iter().collect()), (28u32, vec![]
.into_iter().collect()), (29u32, vec![] .into_iter().collect()),
(30u32, vec![] .into_iter().collect()), (31u32, vec![] .into_iter()
.collect()), (32u32, vec![] .into_iter().collect()), (33u32, vec![]
.into_iter().collect()), (34u32, vec![] .into_iter().collect()),
(35u32, vec![] .into_iter().collect()), (36u32, vec![] .into_iter()
.collect()), (37u32, vec![] .into_iter().collect()), (38u32, vec![]
.into_iter().collect()), (39u32, vec![] .into_iter().collect()),
(40u32, vec![] .into_iter().collect()), (41u32, vec![] .into_iter()
.collect()), (42u32, vec![] .into_iter().collect()), (43u32, vec![]
.into_iter().collect()), (44u32, vec![] .into_iter().collect()),
(45u32, vec![] .into_iter().collect()), (46u32, vec![] .into_iter()
.collect()), (47u32, vec![] .into_iter().collect()), (48u32, vec![]
.into_iter().collect()), (49u32, vec![] .into_iter().collect()),
(50u32, vec![] .into_iter().collect()), (51u32, vec![] .into_iter()
.collect()), (52u32, vec![] .into_iter().collect()), (53u32, vec![]
.into_iter().collect()), (54u32, vec![] .into_iter().collect()),
(55u32, vec![] .into_iter().collect()), (56u32, vec![] .into_iter()
.collect()), (57u32, vec![] .into_iter().collect()), (58u32, vec![]
.into_iter().collect()), (59u32, vec![] .into_iter().collect()),
(60u32, vec![] .into_iter().collect()), (61u32, vec![] .into_iter()
.collect()), (62u32, vec![] .into_iter().collect()), (63u32, vec![]
.into_iter().collect()), (64u32, vec![] .into_iter().collect()),
(65u32, vec![] .into_iter().collect()), (66u32, vec![] .into_iter()
.collect()), (67u32, vec![] .into_iter().collect()), (68u32, vec![]
.into_iter().collect()), (69u32, vec![] .into_iter().collect()),
(70u32, vec![] .into_iter().collect()), (71u32, vec![] .into_iter()
.collect()), (72u32, vec![] .into_iter().collect()), (73u32, vec![]
.into_iter().collect()), (74u32, vec![] .into_iter().collect()),
(75u32, vec![] .into_iter().collect()), (76u32, vec![] .into_iter()
.collect()), (77u32, vec![] .into_iter().collect()), (78u32, vec![]
.into_iter().collect()), (79u32, vec![] .into_iter().collect()),
(80u32, vec![] .into_iter().collect()), (81u32, vec![] .into_iter()
.collect()), (82u32, vec![] .into_iter().collect()), (83u32, vec![]
.into_iter().collect()), (84u32, vec![] .into_iter().collect()),
(85u32, vec![] .into_iter().collect()), (86u32, vec![] .into_iter()
.collect()), (87u32, vec![] .into_iter().collect()), (88u32, vec![]
.into_iter().collect()), (89u32, vec![] .into_iter().collect()),
(90u32, vec![] .into_iter().collect()), (91u32, vec![] .into_iter()
.collect()), (92u32, vec![] .into_iter().collect()), (93u32, vec![]
.into_iter().collect()), (94u32, vec![] .into_iter().collect()),
(95u32, vec![] .into_iter().collect()), (96u32, vec![] .into_iter()
.collect()), (97u32, vec![] .into_iter().collect()), (98u32, vec![]
.into_iter().collect()), (99u32, vec![] .into_iter().collect()),
(100u32, vec![] .into_iter().collect()), (101u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RequestHash,
MemoryAccess::ReadWrite), (LogicType::ClearMemory,
MemoryAccess::Write), (LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::TotalMoles,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }, SlotInfo { name : "Storage".into(),
typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: true,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
2027713511i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureReinforcedCompositeWindow".into(),
prefab_hash: 2027713511i32,
desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa."
.into(),
name: "Reinforced Window (Composite)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-816454272i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureReinforcedCompositeWindowSteel".into(),
prefab_hash: -816454272i32,
desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa."
.into(),
name: "Reinforced Window (Composite Steel)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1939061729i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureReinforcedWallPaddedWindow".into(),
prefab_hash: 1939061729i32,
desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa."
.into(),
name: "Reinforced Window (Padded)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
158502707i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureReinforcedWallPaddedWindowThin".into(),
prefab_hash: 158502707i32,
desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa."
.into(),
name: "Reinforced Window (Thin)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
808389066i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureRocketAvionics".into(),
prefab_hash: 808389066i32,
desc: "".into(),
name: "Rocket Avionics".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Reagents,
MemoryAccess::Read), (LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Quantity,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::VelocityRelativeY, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::Progress, MemoryAccess::Read),
(LogicType::DestinationCode, MemoryAccess::ReadWrite),
(LogicType::Acceleration, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::AutoShutOff, MemoryAccess::ReadWrite), (LogicType::Mass,
MemoryAccess::Read), (LogicType::DryMass, MemoryAccess::Read),
(LogicType::Thrust, MemoryAccess::Read), (LogicType::Weight,
MemoryAccess::Read), (LogicType::ThrustToWeight, MemoryAccess::Read),
(LogicType::TimeToDestination, MemoryAccess::Read),
(LogicType::BurnTimeRemaining, MemoryAccess::Read),
(LogicType::AutoLand, MemoryAccess::Write),
(LogicType::FlightControlRule, MemoryAccess::Read),
(LogicType::ReEntryAltitude, MemoryAccess::Read), (LogicType::Apex,
MemoryAccess::Read), (LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::Discover, MemoryAccess::Read), (LogicType::Chart,
MemoryAccess::Read), (LogicType::Survey, MemoryAccess::Read),
(LogicType::NavPoints, MemoryAccess::Read),
(LogicType::ChartedNavPoints, MemoryAccess::Read), (LogicType::Sites,
MemoryAccess::Read), (LogicType::CurrentCode, MemoryAccess::Read),
(LogicType::Density, MemoryAccess::Read), (LogicType::Richness,
MemoryAccess::Read), (LogicType::Size, MemoryAccess::Read),
(LogicType::TotalQuantity, MemoryAccess::Read),
(LogicType::MinedQuantity, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Invalid".into()), (1u32, "None".into()), (2u32, "Mine"
.into()), (3u32, "Survey".into()), (4u32, "Discover".into()),
(5u32, "Chart".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: true,
},
}
.into(),
);
map.insert(
997453927i32,
StructureLogicDeviceMemoryTemplate {
templateType: "StructureLogicDeviceMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureRocketCelestialTracker".into(),
prefab_hash: 997453927i32,
desc: "The Celestial Tracker can be placed in Rockets and when turned on will provide data that can be used to orientate devices such as the <link=ThingStructureGroundBasedTelescope><color=green>Telescope</color></link>. The Horizontal and Vertical output is localized to the orientation of the tracker. You can calibrate your alignment by comparing the result for the primary body with the output from the <link=ThingStructureDaylightSensor><color=green>Daylight Sensor</color></link>. Full functionality will only be available in orbit, but you can configure using the primary body. For aligning with the telescope, have the face plate facing up and the cables facing in the same direction as for the telescope and the output values will be aligned."
.into(),
name: "Rocket Celestial Tracker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Horizontal, MemoryAccess::Read),
(LogicType::Vertical, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::Index,
MemoryAccess::ReadWrite), (LogicType::CelestialHash,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
memory: MemoryInfo {
instructions: Some(
vec![
("BodyOrientation".into(), Instruction { description :
"<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>CELESTIAL_INDEX</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-31 </color> | <color=yellow>HORIZONTAL_DECI_DEGREES</color> | <color=orange>SHORT_16</color> |\r\n| <color=red>32-47 </color> | <color=yellow>VERTICAL_DECI_DEGREES</color> | <color=orange>SHORT_16</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CELESTIAL_INDEX | BYTE_8 |\r\n| 16-31 | HORIZONTAL_DECI_DEGREES | SHORT_16 |\r\n| 32-47 | VERTICAL_DECI_DEGREES | SHORT_16 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "CelestialTracking".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "CELESTIAL_INDEX".into(), typ
: InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 31u32))
}, name : "HORIZONTAL_DECI_DEGREES".into(), typ :
InstructionPartType::Short16 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((32u32, 47u32))
}, name : "VERTICAL_DECI_DEGREES".into(), typ :
InstructionPartType::Short16 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((48u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::Read,
memory_size: 12u32,
},
}
.into(),
);
map.insert(
150135861i32,
StructureCircuitHolderTemplate {
templateType: "StructureCircuitHolder".into(),
prefab: PrefabInfo {
prefab_name: "StructureRocketCircuitHousing".into(),
prefab_hash: 150135861i32,
desc: "".into(),
name: "Rocket Circuit Housing".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::LineNumber, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::LineNumber, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: true,
},
slots: vec![
SlotInfo { name : "Programmable Chip".into(), typ :
Class::ProgrammableChip }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: Some(6u32),
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
178472613i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureRocketEngineTiny".into(),
prefab_hash: 178472613i32,
desc: "".into(),
name: "Rocket Engine (Tiny)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1781051034i32,
StructureLogicDeviceConsumerMemoryTemplate {
templateType: "StructureLogicDeviceConsumerMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureRocketManufactory".into(),
prefab_hash: 1781051034i32,
desc: "".into(),
name: "Rocket Manufactory".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RecipeHash,
MemoryAccess::ReadWrite), (LogicType::CompletionRatio,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name
: "Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemAstroloyIngot".into(), "ItemConstantanIngot".into(),
"ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot"
.into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(),
"ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot"
.into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(),
"ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel"
.into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(),
"ItemWaspaloyIngot".into(), "ItemWasteIngot".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
fabricator_info: Some(FabricatorInfo {
tier: MachineTier::Undefined,
recipes: vec![
("ItemKitAccessBridge".into(), Recipe { tier : MachineTier::TierOne,
time : 30f64, energy : 9000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 3f64),
("Steel".into(), 10f64)] .into_iter().collect() }),
("ItemKitChuteUmbilical".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 3f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }),
("ItemKitElectricUmbilical".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Gold".into(), 5f64), ("Steel"
.into(), 5f64)] .into_iter().collect() }), ("ItemKitFuselage".into(),
Recipe { tier : MachineTier::TierOne, time : 120f64, energy :
60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents :
vec![("Steel".into(), 20f64)] .into_iter().collect() }),
("ItemKitGasUmbilical".into(), Recipe { tier : MachineTier::TierOne,
time : 5f64, energy : 2500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 5f64), ("Steel".into(), 5f64)]
.into_iter().collect() }), ("ItemKitGovernedGasRocketEngine".into(),
Recipe { tier : MachineTier::TierOne, time : 60f64, energy :
60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 10f64), ("Gold".into(), 5f64), ("Iron".into(),
15f64)] .into_iter().collect() }), ("ItemKitLaunchMount".into(),
Recipe { tier : MachineTier::TierOne, time : 240f64, energy :
120000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents :
vec![("Steel".into(), 60f64)] .into_iter().collect() }),
("ItemKitLaunchTower".into(), Recipe { tier : MachineTier::TierOne,
time : 30f64, energy : 30000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Steel".into(), 10f64)] .into_iter().collect() }),
("ItemKitLiquidUmbilical".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel"
.into(), 5f64)] .into_iter().collect() }),
("ItemKitPressureFedGasEngine".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 60000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Constantan".into(), 10f64),
("Electrum".into(), 5f64), ("Invar".into(), 20f64), ("Steel".into(),
20f64)] .into_iter().collect() }), ("ItemKitPressureFedLiquidEngine"
.into(), Recipe { tier : MachineTier::TierOne, time : 60f64, energy :
60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Astroloy".into(), 10f64), ("Inconel".into(), 5f64),
("Waspaloy".into(), 15f64)] .into_iter().collect() }),
("ItemKitPumpedLiquidEngine".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 60000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Constantan".into(), 10f64),
("Electrum".into(), 5f64), ("Steel".into(), 15f64)] .into_iter()
.collect() }), ("ItemKitRocketAvionics".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Electrum".into(), 2f64),
("Solder".into(), 3f64)] .into_iter().collect() }),
("ItemKitRocketBattery".into(), Recipe { tier : MachineTier::TierOne,
time : 10f64, energy : 10000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Electrum".into(), 5f64), ("Solder".into(), 5f64),
("Steel".into(), 10f64)] .into_iter().collect() }),
("ItemKitRocketCargoStorage".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 30000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Constantan".into(), 10f64),
("Invar".into(), 5f64), ("Steel".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitRocketCelestialTracker".into(), Recipe { tier
: MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Electrum".into(), 5f64),
("Steel".into(), 5f64)] .into_iter().collect() }),
("ItemKitRocketCircuitHousing".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Electrum".into(), 2f64),
("Solder".into(), 3f64)] .into_iter().collect() }),
("ItemKitRocketDatalink".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 2500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Electrum".into(), 2f64),
("Solder".into(), 3f64)] .into_iter().collect() }),
("ItemKitRocketGasFuelTank".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }),
("ItemKitRocketLiquidFuelTank".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Steel"
.into(), 20f64)] .into_iter().collect() }), ("ItemKitRocketMiner"
.into(), Recipe { tier : MachineTier::TierOne, time : 60f64, energy :
60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 4i64, reagents :
vec![("Constantan".into(), 10f64), ("Electrum".into(), 5f64),
("Invar".into(), 5f64), ("Steel".into(), 10f64)] .into_iter()
.collect() }), ("ItemKitRocketScanner".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 60000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 10f64), ("Gold"
.into(), 10f64)] .into_iter().collect() }),
("ItemKitRocketTransformerSmall".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 12000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Electrum".into(), 5f64),
("Steel".into(), 10f64)] .into_iter().collect() }),
("ItemKitStairwell".into(), Recipe { tier : MachineTier::TierOne,
time : 20f64, energy : 6000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 15f64)] .into_iter().collect() }),
("ItemRocketMiningDrillHead".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 20f64)]
.into_iter().collect() }), ("ItemRocketMiningDrillHeadDurable"
.into(), Recipe { tier : MachineTier::TierOne, time : 30f64, energy :
5000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents : vec![("Iron"
.into(), 10f64), ("Steel".into(), 10f64)] .into_iter().collect() }),
("ItemRocketMiningDrillHeadHighSpeedIce".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Invar".into(), 5f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }),
("ItemRocketMiningDrillHeadHighSpeedMineral".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Invar".into(), 5f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }),
("ItemRocketMiningDrillHeadIce".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Iron".into(), 10f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }),
("ItemRocketMiningDrillHeadLongTerm".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Invar".into(), 5f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }),
("ItemRocketMiningDrillHeadMineral".into(), Recipe { tier :
MachineTier::TierOne, time : 30f64, energy : 5000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Iron".into(), 10f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }), ("ItemRocketScanningHead"
.into(), Recipe { tier : MachineTier::TierOne, time : 60f64, energy :
60000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 3f64), ("Gold".into(), 2f64)] .into_iter()
.collect() })
]
.into_iter()
.collect(),
}),
memory: MemoryInfo {
instructions: Some(
vec![
("DeviceSetLock".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>LOCK_STATE</color> | <color=orange>BOOL_8</color> |\r\n| <color=grey>16-63 </color> | <color=grey>UNUSED</color> | <color=grey>48</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |"
.into(), typ : "PrinterInstruction".into(), value : 6i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "LOCK_STATE".into(), typ :
InstructionPartType::Bool8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(48u32) }] .into_iter().collect() }),
("EjectAllReagents".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 8i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() }),
("EjectReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "PrinterInstruction".into(), value : 7i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "REAGENT_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("ExecuteRecipe".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 2i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "PREFAB_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("JumpIfNextInvalid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 4i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("JumpToAddress".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 5i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("MissingRecipeReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 54 TO 62</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY_CEIL</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 9i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((54u32,
Some(62u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY_CEIL".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "REAGENT_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("StackPointer".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESS 63</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>INDEX</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((63u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "INDEX".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("WaitUntilNextValid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 3i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::ReadWrite,
memory_size: 64u32,
},
}
.into(),
);
map.insert(
-2087223687i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureRocketMiner".into(),
prefab_hash: -2087223687i32,
desc: "Gathers available resources at the rocket\'s current space location."
.into(),
name: "Rocket Miner".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Quantity, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::DrillCondition, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Export".into(), typ : Class::None }, SlotInfo { name :
"Drill Head Slot".into(), typ : Class::DrillHead }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
2014252591i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureRocketScanner".into(),
prefab_hash: 2014252591i32,
desc: "".into(),
name: "Rocket Scanner".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Scanner Head Slot".into(), typ : Class::ScanningHead }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-654619479i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureRocketTower".into(),
prefab_hash: -654619479i32,
desc: "".into(),
name: "Launch Tower".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
518925193i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureRocketTransformerSmall".into(),
prefab_hash: 518925193i32,
desc: "".into(),
name: "Transformer Small (Rocket)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
806513938i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureRover".into(),
prefab_hash: 806513938i32,
desc: "".into(),
name: "Rover Frame".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1875856925i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSDBHopper".into(),
prefab_hash: -1875856925i32,
desc: "".into(),
name: "SDB Hopper".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::ClearMemory,
MemoryAccess::Write), (LogicType::ImportCount, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
467225612i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSDBHopperAdvanced".into(),
prefab_hash: 467225612i32,
desc: "".into(),
name: "SDB Hopper Advanced".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::ClearMemory,
MemoryAccess::Write), (LogicType::ImportCount, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1155865682i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSDBSilo".into(),
prefab_hash: 1155865682i32,
desc: "The majestic silo holds large quantities of almost anything. While it is doing that, it cannot be deconstructed. Note also, that any food you put into a silo is likely to <link=DecayPage><color=#0080FFFF>decay</color></link> extremely rapidly. The silo can hold up to 600 stacks."
.into(),
name: "SDB Silo".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Quantity, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
439026183i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
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 <link=ThingStructureComputer><color=green>Computer</color></link> containing a <link=ThingMotherboardComms><color=green>Communications Motherboard</color></link> motherboard, a <link=ThingLandingpad_CenterPiece01><color=green>Landingpad Center</color></link>, and a <link=ThingStructureVendingMachine><color=green>Vending Machine</color></link>, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic."
.into(),
name: "Medium Satellite Dish".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::Horizontal, MemoryAccess::ReadWrite),
(LogicType::Vertical, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::SignalStrength, MemoryAccess::Read),
(LogicType::SignalId, MemoryAccess::Read),
(LogicType::InterrogationProgress, MemoryAccess::Read),
(LogicType::TargetPadIndex, MemoryAccess::ReadWrite),
(LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ,
MemoryAccess::Read), (LogicType::MinimumWattsToContact,
MemoryAccess::Read), (LogicType::WattsReachingContact,
MemoryAccess::Read), (LogicType::ContactTypeId, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::BestContactFilter, MemoryAccess::ReadWrite),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-641491515i32,
StructureLogicDeviceConsumerMemoryTemplate {
templateType: "StructureLogicDeviceConsumerMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureSecurityPrinter".into(),
prefab_hash: -641491515i32,
desc: "Any <link=Stationeer><color=#0080FFFF>Stationeer</color></link> concerned about security needs the <link=Harkwell><color=#0080FFFF>Harkwell-designed</color></link> Vigilant-E security printer. Use the Vigilant-E to create a <link=ThingCartridgeAccessController><color=green>Cartridge (Access Controller)</color></link>, in order to restrict access to different parts of your base via keycards like the <link=ThingAccessCardBlue><color=green>Access Card (Blue)</color></link>. The printer also makes a variety of weapons and ammunitions to defend your base against any hostile, aggressive or just slightly rude entites you encounter as you explore the Solar System.\n"
.into(),
name: "Security Printer".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RecipeHash,
MemoryAccess::ReadWrite), (LogicType::CompletionRatio,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name
: "Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemAstroloyIngot".into(), "ItemConstantanIngot".into(),
"ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot"
.into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(),
"ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot"
.into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(),
"ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel"
.into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(),
"ItemWaspaloyIngot".into(), "ItemWasteIngot".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
fabricator_info: Some(FabricatorInfo {
tier: MachineTier::Undefined,
recipes: vec![
("AccessCardBlack".into(), Recipe { tier : MachineTier::TierOne, time
: 2f64, energy : 200f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 1f64), ("Gold".into(), 1f64),
("Iron".into(), 1f64)] .into_iter().collect() }), ("AccessCardBlue"
.into(), Recipe { tier : MachineTier::TierOne, time : 2f64, energy :
200f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(),
1f64)] .into_iter().collect() }), ("AccessCardBrown".into(), Recipe {
tier : MachineTier::TierOne, time : 2f64, energy : 200f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] .into_iter()
.collect() }), ("AccessCardGray".into(), Recipe { tier :
MachineTier::TierOne, time : 2f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold"
.into(), 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("AccessCardGreen".into(), Recipe { tier : MachineTier::TierOne, time
: 2f64, energy : 200f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 1f64), ("Gold".into(), 1f64),
("Iron".into(), 1f64)] .into_iter().collect() }), ("AccessCardKhaki"
.into(), Recipe { tier : MachineTier::TierOne, time : 2f64, energy :
200f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(),
1f64)] .into_iter().collect() }), ("AccessCardOrange".into(), Recipe
{ tier : MachineTier::TierOne, time : 2f64, energy : 200f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] .into_iter()
.collect() }), ("AccessCardPink".into(), Recipe { tier :
MachineTier::TierOne, time : 2f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold"
.into(), 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("AccessCardPurple".into(), Recipe { tier : MachineTier::TierOne,
time : 2f64, energy : 200f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 1f64), ("Gold".into(), 1f64),
("Iron".into(), 1f64)] .into_iter().collect() }), ("AccessCardRed"
.into(), Recipe { tier : MachineTier::TierOne, time : 2f64, energy :
200f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 1f64), ("Gold".into(), 1f64), ("Iron".into(),
1f64)] .into_iter().collect() }), ("AccessCardWhite".into(), Recipe {
tier : MachineTier::TierOne, time : 2f64, energy : 200f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
1f64), ("Gold".into(), 1f64), ("Iron".into(), 1f64)] .into_iter()
.collect() }), ("AccessCardYellow".into(), Recipe { tier :
MachineTier::TierOne, time : 2f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 1f64), ("Gold"
.into(), 1f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("CartridgeAccessController".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 1f64)] .into_iter().collect() }),
("FireArmSMG".into(), Recipe { tier : MachineTier::TierOne, time :
120f64, energy : 3000f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Nickel".into(), 10f64), ("Steel".into(), 30f64)]
.into_iter().collect() }), ("Handgun".into(), Recipe { tier :
MachineTier::TierOne, time : 120f64, energy : 3000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Nickel".into(), 10f64),
("Steel".into(), 30f64)] .into_iter().collect() }),
("HandgunMagazine".into(), Recipe { tier : MachineTier::TierOne, time
: 60f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 3f64), ("Lead".into(), 1f64),
("Steel".into(), 3f64)] .into_iter().collect() }), ("ItemAmmoBox"
.into(), Recipe { tier : MachineTier::TierOne, time : 120f64, energy
: 3000f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 30f64), ("Lead".into(), 50f64), ("Steel"
.into(), 30f64)] .into_iter().collect() }), ("ItemExplosive".into(),
Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 5i64, reagents : vec![("Copper".into(),
5f64), ("Electrum".into(), 1f64), ("Gold".into(), 5f64), ("Lead"
.into(), 10f64), ("Steel".into(), 7f64)] .into_iter().collect() }),
("ItemGrenade".into(), Recipe { tier : MachineTier::TierOne, time :
90f64, energy : 2900f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 4i64,
reagents : vec![("Copper".into(), 15f64), ("Gold".into(), 1f64),
("Lead".into(), 25f64), ("Steel".into(), 25f64)] .into_iter()
.collect() }), ("ItemMiningCharge".into(), Recipe { tier :
MachineTier::TierOne, time : 7f64, energy : 200f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 7f64), ("Lead".into(), 10f64)]
.into_iter().collect() }), ("SMGMagazine".into(), Recipe { tier :
MachineTier::TierOne, time : 60f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 3f64), ("Lead"
.into(), 1f64), ("Steel".into(), 3f64)] .into_iter().collect() }),
("WeaponPistolEnergy".into(), Recipe { tier : MachineTier::TierTwo,
time : 120f64, energy : 3000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 4i64,
reagents : vec![("Electrum".into(), 20f64), ("Gold".into(), 10f64),
("Solder".into(), 10f64), ("Steel".into(), 10f64)] .into_iter()
.collect() }), ("WeaponRifleEnergy".into(), Recipe { tier :
MachineTier::TierTwo, time : 240f64, energy : 10000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 6i64, reagents : vec![("Constantan".into(), 10f64),
("Electrum".into(), 20f64), ("Gold".into(), 10f64), ("Invar".into(),
10f64), ("Solder".into(), 10f64), ("Steel".into(), 20f64)]
.into_iter().collect() })
]
.into_iter()
.collect(),
}),
memory: MemoryInfo {
instructions: Some(
vec![
("DeviceSetLock".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>LOCK_STATE</color> | <color=orange>BOOL_8</color> |\r\n| <color=grey>16-63 </color> | <color=grey>UNUSED</color> | <color=grey>48</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |"
.into(), typ : "PrinterInstruction".into(), value : 6i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "LOCK_STATE".into(), typ :
InstructionPartType::Bool8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(48u32) }] .into_iter().collect() }),
("EjectAllReagents".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 8i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() }),
("EjectReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "PrinterInstruction".into(), value : 7i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "REAGENT_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("ExecuteRecipe".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 2i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "PREFAB_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("JumpIfNextInvalid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 4i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("JumpToAddress".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 5i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("MissingRecipeReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 54 TO 62</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY_CEIL</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 9i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((54u32,
Some(62u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY_CEIL".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "REAGENT_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("StackPointer".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESS 63</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>INDEX</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((63u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "INDEX".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("WaitUntilNextValid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 3i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::ReadWrite,
memory_size: 64u32,
},
}
.into(),
);
map.insert(
1172114950i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureShelf".into(),
prefab_hash: 1172114950i32,
desc: "".into(),
name: "Shelf".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
182006674i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureShelfMedium".into(),
prefab_hash: 182006674i32,
desc: "A shelf for putting things on, so you can see them.".into(),
name: "Shelf Medium".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (6u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (7u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (8u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (9u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (10u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (11u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (12u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (13u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (14u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1330754486i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureShortCornerLocker".into(),
prefab_hash: 1330754486i32,
desc: "".into(),
name: "Short Corner Locker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-554553467i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureShortLocker".into(),
prefab_hash: -554553467i32,
desc: "".into(),
name: "Short Locker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (6u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (7u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (8u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (9u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-775128944i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureShower".into(),
prefab_hash: -775128944i32,
desc: "".into(),
name: "Shower".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1081797501i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureShowerPowered".into(),
prefab_hash: -1081797501i32,
desc: "".into(),
name: "Shower (Powered)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
879058460i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSign1x1".into(),
prefab_hash: 879058460i32,
desc: "".into(),
name: "Sign 1x1".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
908320837i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSign2x1".into(),
prefab_hash: 908320837i32,
desc: "".into(),
name: "Sign 2x1".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-492611i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSingleBed".into(),
prefab_hash: -492611i32,
desc: "Description coming.".into(),
name: "Single Bed".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1467449329i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSleeper".into(),
prefab_hash: -1467449329i32,
desc: "".into(),
name: "Sleeper".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1213495833i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSleeperLeft".into(),
prefab_hash: 1213495833i32,
desc: "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided."
.into(),
name: "Sleeper Left".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32,
"Unpowered".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1812330717i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSleeperRight".into(),
prefab_hash: -1812330717i32,
desc: "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided."
.into(),
name: "Sleeper Right".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32,
"Unpowered".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1300059018i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSleeperVertical".into(),
prefab_hash: -1300059018i32,
desc: "The vertical variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided."
.into(),
name: "Sleeper Vertical".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.1f32,
radiation_factor: 0.1f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::EntityState, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32,
"Unpowered".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1382098999i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSleeperVerticalDroid".into(),
prefab_hash: 1382098999i32,
desc: "The Droid Sleeper will recharge robot batteries and equiped suit batteries if present. This sleeper variant is only safe for robots. Entering as a non robot character will cause you to take damage."
.into(),
name: "Droid Sleeper Vertical".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1310303582i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallDirectHeatExchangeGastoGas".into(),
prefab_hash: 1310303582i32,
desc: "Direct Heat Exchangers equalize the temperature of the two input networks."
.into(),
name: "Small Direct Heat Exchanger - Gas + Gas".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1825212016i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallDirectHeatExchangeLiquidtoGas".into(),
prefab_hash: 1825212016i32,
desc: "Direct Heat Exchangers equalize the temperature of the two input networks."
.into(),
name: "Small Direct Heat Exchanger - Liquid + Gas ".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-507770416i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallDirectHeatExchangeLiquidtoLiquid".into(),
prefab_hash: -507770416i32,
desc: "Direct Heat Exchangers equalize the temperature of the two input networks."
.into(),
name: "Small Direct Heat Exchanger - Liquid + Liquid".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2138748650i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
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 <link=ThingStructureComputer><color=green>Computer</color></link> containing a <link=ThingMotherboardComms><color=green>Communications Motherboard</color></link> motherboard, a <link=ThingLandingpad_CenterPiece01><color=green>Landingpad Center</color></link>, and a <link=ThingStructureVendingMachine><color=green>Vending Machine</color></link>, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic."
.into(),
name: "Small Satellite Dish".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::Horizontal, MemoryAccess::ReadWrite),
(LogicType::Vertical, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::SignalStrength, MemoryAccess::Read),
(LogicType::SignalId, MemoryAccess::Read),
(LogicType::InterrogationProgress, MemoryAccess::Read),
(LogicType::TargetPadIndex, MemoryAccess::ReadWrite),
(LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ,
MemoryAccess::Read), (LogicType::MinimumWattsToContact,
MemoryAccess::Read), (LogicType::WattsReachingContact,
MemoryAccess::Read), (LogicType::ContactTypeId, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::BestContactFilter, MemoryAccess::ReadWrite),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1633000411i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallTableBacklessDouble".into(),
prefab_hash: -1633000411i32,
desc: "".into(),
name: "Small (Table Backless Double)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1897221677i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallTableBacklessSingle".into(),
prefab_hash: -1897221677i32,
desc: "".into(),
name: "Small (Table Backless Single)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1260651529i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallTableDinnerSingle".into(),
prefab_hash: 1260651529i32,
desc: "".into(),
name: "Small (Table Dinner Single)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-660451023i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallTableRectangleDouble".into(),
prefab_hash: -660451023i32,
desc: "".into(),
name: "Small (Table Rectangle Double)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-924678969i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallTableRectangleSingle".into(),
prefab_hash: -924678969i32,
desc: "".into(),
name: "Small (Table Rectangle Single)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-19246131i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallTableThickDouble".into(),
prefab_hash: -19246131i32,
desc: "".into(),
name: "Small (Table Thick Double)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-291862981i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureSmallTableThickSingle".into(),
prefab_hash: -291862981i32,
desc: "".into(),
name: "Small Table (Thick Single)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2045627372i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSolarPanel".into(),
prefab_hash: -2045627372i32,
desc: "<link=Sinotai><color=#0080FFFF>Sinotai\'s</color></link> standard solar panels are used for generating power from sunlight. They can be connected to <link=LogicPage><color=#0080FFFF>Logic</color></link> systems, in order to track sunlight, but their reduced during storms and when damaged. You can repair these using some trusty <link=ThingItemDuctTape><color=green>Duct Tape</color></link>."
.into(),
name: "Solar Panel".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1554349863i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSolarPanel45".into(),
prefab_hash: -1554349863i32,
desc: "<link=Sinotai><color=#0080FFFF>Sinotai</color></link> basic solar panels generate power from sunlight, sitting at 45 degrees to the ground. Their efficiency is reduced during storms and when damaged. You can repair these using some trusty <link=ThingItemDuctTape><color=green>Duct Tape</color></link>."
.into(),
name: "Solar Panel (Angled)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
930865127i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSolarPanel45Reinforced".into(),
prefab_hash: 930865127i32,
desc: "This solar panel is resistant to storm damage.".into(),
name: "Solar Panel (Heavy Angled)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-539224550i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSolarPanelDual".into(),
prefab_hash: -539224550i32,
desc: "<link=Sinotai><color=#0080FFFF>Sinotai</color></link> dual solar panels are used for generating power from sunlight, with dedicated data and power ports. They can be connected to {<link=LogicPage><color=#0080FFFF>Logic</color></link> systems, in order to track sunlight, but their efficiency is reduced during storms and when damaged. You can repair these using some trusty <link=ThingItemDuctTape><color=green>Duct Tape</color></link>."
.into(),
name: "Solar Panel (Dual)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1545574413i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSolarPanelDualReinforced".into(),
prefab_hash: -1545574413i32,
desc: "This solar panel is resistant to storm damage.".into(),
name: "Solar Panel (Heavy Dual)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1968102968i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSolarPanelFlat".into(),
prefab_hash: 1968102968i32,
desc: "<link=Sinotai><color=#0080FFFF>Sinotai</color></link> basic solar panels generate power from sunlight. They lie flat to the ground, and their efficiency is reduced during storms and when damaged. You can repair these using some trusty <link=ThingItemDuctTape><color=green>Duct Tape</color></link>."
.into(),
name: "Solar Panel (Flat)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1697196770i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSolarPanelFlatReinforced".into(),
prefab_hash: 1697196770i32,
desc: "This solar panel is resistant to storm damage.".into(),
name: "Solar Panel (Heavy Flat)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-934345724i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSolarPanelReinforced".into(),
prefab_hash: -934345724i32,
desc: "This solar panel is resistant to storm damage.".into(),
name: "Solar Panel (Heavy)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal,
MemoryAccess::ReadWrite), (LogicType::Vertical,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
813146305i32,
StructureLogicDeviceConsumerTemplate {
templateType: "StructureLogicDeviceConsumer".into(),
prefab: PrefabInfo {
prefab_name: "StructureSolidFuelGenerator".into(),
prefab_hash: 813146305i32,
desc: "The mainstay of power generation for Stationeers, this device provides 20kW of power. Multiple solid resources can be loaded. While operating, the device will output its maximum power regardless of whether you have captured it or not. Watch for blown wires! It will output much more power than your regular <link=ThingItemCableCoil><color=green>Cable Coil</color></link> can handle."
.into(),
name: "Generator (Solid Fuel)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::ClearMemory,
MemoryAccess::Write), (LogicType::ImportCount, MemoryAccess::Read),
(LogicType::PowerGeneration, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Not Generating".into()), (1u32, "Generating".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Input".into(), typ : Class::Ore }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemCharcoal".into(), "ItemCoalOre".into(), "ItemSolidFuel".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
fabricator_info: None,
}
.into(),
);
map.insert(
-1009150565i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSorter".into(),
prefab_hash: -1009150565i32,
desc: "No amount of automation is complete without some way of moving different items to different parts of a system. The <link=Xigo><color=#0080FFFF>Xigo</color></link> A2B sorter can be programmed via a computer with a <link=ThingMotherboardSorter><color=green>Sorter Motherboard</color></link> to direct various items into different chute networks. Filtered items are always passed out the righthand side of the sorter, while non filtered items continue straight through."
.into(),
name: "Sorter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::Output,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "Split".into()), (1u32, "Filter".into()), (2u32, "Logic"
.into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }, SlotInfo { name : "Export 2"
.into(), typ : Class::None }, SlotInfo { name : "Data Disk".into(), typ :
Class::DataDisk }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Output2 }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2020231820i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureStacker".into(),
prefab_hash: -2020231820i32,
desc: "A stacker is an important part of any automated chute network. The <link=Xigo><color=#0080FFFF>Xigo</color></link> ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs.\nThe ProKompile can stack a wide variety of things such as <link=IngotPage><color=#0080FFFF>ingots</color></link>, as well as splitting stacks into appropriate sizes as needed."
.into(),
name: "Stacker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::Output,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Automatic".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }, SlotInfo { name : "Processing"
.into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1585641623i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureStackerReverse".into(),
prefab_hash: 1585641623i32,
desc: "A stacker is an important part of any automated chute network. The <link=Xigo><color=#0080FFFF>Xigo</color></link> ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs. The reversed stacker has power and data on the opposite side.\nThe ProKompile can stack a wide variety of things such as <link=IngotPage><color=#0080FFFF>ingots</color></link>, as well as splitting stacks into appropriate sizes as needed."
.into(),
name: "Stacker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::Output,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Automatic".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }, SlotInfo { name : "Export".into(),
typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1405018945i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairs4x2".into(),
prefab_hash: 1405018945i32,
desc: "".into(),
name: "Stairs".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
155214029i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairs4x2RailL".into(),
prefab_hash: 155214029i32,
desc: "".into(),
name: "Stairs with Rail (Left)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-212902482i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairs4x2RailR".into(),
prefab_hash: -212902482i32,
desc: "".into(),
name: "Stairs with Rail (Right)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1088008720i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairs4x2Rails".into(),
prefab_hash: -1088008720i32,
desc: "".into(),
name: "Stairs with Rails".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
505924160i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairwellBackLeft".into(),
prefab_hash: 505924160i32,
desc: "".into(),
name: "Stairwell (Back Left)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-862048392i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairwellBackPassthrough".into(),
prefab_hash: -862048392i32,
desc: "".into(),
name: "Stairwell (Back Passthrough)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2128896573i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairwellBackRight".into(),
prefab_hash: -2128896573i32,
desc: "".into(),
name: "Stairwell (Back Right)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-37454456i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairwellFrontLeft".into(),
prefab_hash: -37454456i32,
desc: "".into(),
name: "Stairwell (Front Left)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1625452928i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairwellFrontPassthrough".into(),
prefab_hash: -1625452928i32,
desc: "".into(),
name: "Stairwell (Front Passthrough)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
340210934i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairwellFrontRight".into(),
prefab_hash: 340210934i32,
desc: "".into(),
name: "Stairwell (Front Right)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2049879875i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureStairwellNoDoors".into(),
prefab_hash: 2049879875i32,
desc: "".into(),
name: "Stairwell (No Doors)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-260316435i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureStirlingEngine".into(),
prefab_hash: -260316435i32,
desc: "Harnessing an ancient thermal exploit, the <link=Recurso><color=#0080FFFF>Recurso</color></link> \'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 <link=SlotGasCanister><color=orange>Gas Canister</color></link>. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results."
.into(),
name: "Stirling Engine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.15f32,
radiation_factor: 0.15f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read),
(LogicType::Temperature, MemoryAccess::Read), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::RatioOxygen,
MemoryAccess::Read), (LogicType::RatioCarbonDioxide,
MemoryAccess::Read), (LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::Quantity, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PowerGeneration,
MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read),
(LogicType::Volume, MemoryAccess::Read),
(LogicType::RatioNitrousOxide, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::Combustion,
MemoryAccess::Read), (LogicType::EnvironmentEfficiency,
MemoryAccess::Read), (LogicType::WorkingGasEfficiency,
MemoryAccess::Read), (LogicType::RatioLiquidNitrogen,
MemoryAccess::Read), (LogicType::RatioLiquidOxygen,
MemoryAccess::Read), (LogicType::RatioLiquidVolatiles,
MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Power, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-793623899i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureStorageLocker".into(),
prefab_hash: -793623899i32,
desc: "".into(),
name: "Locker".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (3u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (4u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (5u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (6u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (7u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (8u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (9u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (10u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (11u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (12u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (13u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (14u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (15u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (16u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (17u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (18u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (19u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (20u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (21u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (22u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (23u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (24u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (25u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (26u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (27u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (28u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (29u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "".into(), typ :
Class::None }, SlotInfo { name : "".into(), typ : Class::None }, SlotInfo
{ name : "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ
: Class::None }, SlotInfo { name : "".into(), typ : Class::None },
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
255034731i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureSuitStorage".into(),
prefab_hash: 255034731i32,
desc: "As tidy as it is useful, the suit storage rack holds an <link=ThingItemEvaSuit><color=green>Eva Suit</color></link>, <link=ThingItemSpaceHelmet><color=green>Space Helmet</color></link> and a <link=ThingItemJetpackBasic><color=green>Jetpack Basic</color></link>.\nWhen powered and connected to <link=ThingOxygen><color=green><N:EN:Oxygen></color></link> and <link=ThingPropellant><color=green><N:EN:Propellant></color></link>, it will recharge the suit\'s batteries, refill the <link=ThingItemGasCanisterOxygen><color=green>Canister (Oxygen)</color></link> and your <link=ThingItemGasFilterNitrogen><color=green>Filter (Nitrogen)</color></link> <link=SlotGasCanister><color=orange>Gas Canister</color></link>. The wastetank will be pumped out to the pipe connected to the waste outlet.\nAll the rack\'s pipes must be connected or the unit will show an error state, but it will still charge the battery."
.into(),
name: "Suit Storage".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Charge, MemoryAccess::Read),
(LogicSlotType::ChargeRatio, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Open, MemoryAccess::ReadWrite), (LogicSlotType::On,
MemoryAccess::ReadWrite), (LogicSlotType::Lock,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Charge, MemoryAccess::Read),
(LogicSlotType::ChargeRatio, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::PressureWaste, MemoryAccess::Read),
(LogicSlotType::PressureAir, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (2u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Charge, MemoryAccess::Read),
(LogicSlotType::ChargeRatio, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Helmet".into(), typ : Class::Helmet }, SlotInfo { name
: "Suit".into(), typ : Class::Suit }, SlotInfo { name : "Back".into(),
typ : Class::Back }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Input2 },
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1606848156i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTankBig".into(),
prefab_hash: -1606848156i32,
desc: "".into(),
name: "Large Tank".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
1280378227i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTankBigInsulated".into(),
prefab_hash: 1280378227i32,
desc: "".into(),
name: "Tank Big (Insulated)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1276379454i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureTankConnector".into(),
prefab_hash: -1276379454i32,
desc: "Tank connectors are basic mounting devices that allow you to attach a <link=ThingDynamicGasCanisterEmpty><color=green>Portable Gas Tank</color></link> to a gas pipe network."
.into(),
name: "Tank Connector".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1331802518i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureTankConnectorLiquid".into(),
prefab_hash: 1331802518i32,
desc: "These basic mounting devices allow you to attach a <link=ThingDynamicLiquidCanisterEmpty><color=green>Portable Liquid Tank</color></link> to a liquid pipe network."
.into(),
name: "Liquid Tank Connector".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.010000001f32,
radiation_factor: 0.0005f32,
}),
internal_atmo_info: None,
slots: vec![SlotInfo { name : "Portable Slot".into(), typ : Class::None }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1013514688i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTankSmall".into(),
prefab_hash: 1013514688i32,
desc: "".into(),
name: "Small Tank".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
955744474i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTankSmallAir".into(),
prefab_hash: 955744474i32,
desc: "".into(),
name: "Small Tank (Air)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
2102454415i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTankSmallFuel".into(),
prefab_hash: 2102454415i32,
desc: "".into(),
name: "Small Tank (Fuel)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0.05f32,
radiation_factor: 0.002f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
272136332i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTankSmallInsulated".into(),
prefab_hash: 272136332i32,
desc: "".into(),
name: "Tank Small (Insulated)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: Some(ThermalInfo {
convection_factor: 0f32,
radiation_factor: 0f32,
}),
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure,
MemoryAccess::Read), (LogicType::Temperature, MemoryAccess::Read),
(LogicType::Setting, MemoryAccess::ReadWrite),
(LogicType::RatioOxygen, MemoryAccess::Read),
(LogicType::RatioCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioNitrogen, MemoryAccess::Read),
(LogicType::RatioPollutant, MemoryAccess::Read),
(LogicType::RatioVolatiles, MemoryAccess::Read),
(LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume,
MemoryAccess::Read), (LogicType::RatioNitrousOxide,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::Combustion, MemoryAccess::Read),
(LogicType::RatioLiquidNitrogen, MemoryAccess::Read),
(LogicType::VolumeOfLiquid, MemoryAccess::Read),
(LogicType::RatioLiquidOxygen, MemoryAccess::Read),
(LogicType::RatioLiquidVolatiles, MemoryAccess::Read),
(LogicType::RatioSteam, MemoryAccess::Read),
(LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read),
(LogicType::RatioLiquidPollutant, MemoryAccess::Read),
(LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::RatioHydrogen, MemoryAccess::Read),
(LogicType::RatioLiquidHydrogen, MemoryAccess::Read),
(LogicType::RatioPollutedWater, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: true,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: true,
has_reagents: false,
},
}
.into(),
);
map.insert(
-465741100i32,
StructureLogicDeviceConsumerMemoryTemplate {
templateType: "StructureLogicDeviceConsumerMemory".into(),
prefab: PrefabInfo {
prefab_name: "StructureToolManufactory".into(),
prefab_hash: -465741100i32,
desc: "No mission can be completed without the proper tools. The <link=Norsec><color=#0080FFFF>Norsec</color></link> ThuulDek manufactory can fabricate almost any tool or hand-held device a <link=Stationeer><color=#0080FFFF>Stationeer</color></link> may need to complete their mission, as well as a variety of delightful paints.\nUpgrade the device using a <link=ThingToolPrinterMod><color=green>Tool Printer Mod</color></link> for additional recipes and faster processing speeds."
.into(),
name: "Tool Manufactory".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::Reagents, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RecipeHash,
MemoryAccess::ReadWrite), (LogicType::CompletionRatio,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { name
: "Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: true,
has_reagents: true,
},
consumer_info: ConsumerInfo {
consumed_resouces: vec![
"ItemAstroloyIngot".into(), "ItemConstantanIngot".into(),
"ItemCopperIngot".into(), "ItemElectrumIngot".into(), "ItemGoldIngot"
.into(), "ItemHastelloyIngot".into(), "ItemInconelIngot".into(),
"ItemInvarIngot".into(), "ItemIronIngot".into(), "ItemLeadIngot"
.into(), "ItemNickelIngot".into(), "ItemSiliconIngot".into(),
"ItemSilverIngot".into(), "ItemSolderIngot".into(), "ItemSolidFuel"
.into(), "ItemSteelIngot".into(), "ItemStelliteIngot".into(),
"ItemWaspaloyIngot".into(), "ItemWasteIngot".into()
]
.into_iter()
.collect(),
processed_reagents: vec![].into_iter().collect(),
},
fabricator_info: Some(FabricatorInfo {
tier: MachineTier::Undefined,
recipes: vec![
("FlareGun".into(), Recipe { tier : MachineTier::TierOne, time :
10f64, energy : 2000f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Iron".into(), 10f64), ("Silicon".into(), 10f64)]
.into_iter().collect() }), ("ItemAngleGrinder".into(), Recipe { tier
: MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Iron"
.into(), 3f64)] .into_iter().collect() }), ("ItemArcWelder".into(),
Recipe { tier : MachineTier::TierOne, time : 30f64, energy : 2500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 4i64, reagents : vec![("Electrum".into(),
10f64), ("Invar".into(), 5f64), ("Solder".into(), 10f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }), ("ItemBasketBall".into(),
Recipe { tier : MachineTier::TierOne, time : 1f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Silicon".into(),
1f64)] .into_iter().collect() }), ("ItemBeacon".into(), Recipe { tier
: MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 1f64), ("Iron".into(), 2f64)] .into_iter().collect() }),
("ItemChemLightBlue".into(), Recipe { tier : MachineTier::TierOne,
time : 1f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }),
("ItemChemLightGreen".into(), Recipe { tier : MachineTier::TierOne,
time : 1f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }),
("ItemChemLightRed".into(), Recipe { tier : MachineTier::TierOne,
time : 1f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }),
("ItemChemLightWhite".into(), Recipe { tier : MachineTier::TierOne,
time : 1f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }),
("ItemChemLightYellow".into(), Recipe { tier : MachineTier::TierOne,
time : 1f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Silicon".into(), 1f64)] .into_iter().collect() }),
("ItemClothingBagOveralls_Aus".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)]
.into_iter().collect() }), ("ItemClothingBagOveralls_Brazil".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Silicon".into(),
25f64)] .into_iter().collect() }), ("ItemClothingBagOveralls_Canada"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents :
vec![("Silicon".into(), 25f64)] .into_iter().collect() }),
("ItemClothingBagOveralls_China".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)]
.into_iter().collect() }), ("ItemClothingBagOveralls_EU".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Silicon".into(),
25f64)] .into_iter().collect() }), ("ItemClothingBagOveralls_France"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents :
vec![("Silicon".into(), 25f64)] .into_iter().collect() }),
("ItemClothingBagOveralls_Germany".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)]
.into_iter().collect() }), ("ItemClothingBagOveralls_Japan".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Silicon".into(),
25f64)] .into_iter().collect() }), ("ItemClothingBagOveralls_Korea"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents :
vec![("Silicon".into(), 25f64)] .into_iter().collect() }),
("ItemClothingBagOveralls_NZ".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)]
.into_iter().collect() }), ("ItemClothingBagOveralls_Russia".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Silicon".into(),
25f64)] .into_iter().collect() }),
("ItemClothingBagOveralls_SouthAfrica".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)]
.into_iter().collect() }), ("ItemClothingBagOveralls_UK".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Silicon".into(),
25f64)] .into_iter().collect() }), ("ItemClothingBagOveralls_US"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents :
vec![("Silicon".into(), 25f64)] .into_iter().collect() }),
("ItemClothingBagOveralls_Ukraine".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Silicon".into(), 25f64)]
.into_iter().collect() }), ("ItemCrowbar".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemDirtCanister".into(), Recipe { tier
: MachineTier::TierOne, time : 5f64, energy : 400f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 3f64)]
.into_iter().collect() }), ("ItemDisposableBatteryCharger".into(),
Recipe { tier : MachineTier::TierOne, time : 10f64, energy : 1000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
5f64), ("Gold".into(), 2f64), ("Iron".into(), 2f64)] .into_iter()
.collect() }), ("ItemDrill".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 5f64), ("Iron"
.into(), 5f64)] .into_iter().collect() }), ("ItemDuctTape".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
2f64)] .into_iter().collect() }), ("ItemEvaSuit".into(), Recipe {
tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Copper".into(),
2f64), ("Iron".into(), 5f64)] .into_iter().collect() }),
("ItemFlagSmall".into(), Recipe { tier : MachineTier::TierOne, time :
1f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 1f64)] .into_iter().collect() }),
("ItemFlashlight".into(), Recipe { tier : MachineTier::TierOne, time
: 15f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)]
.into_iter().collect() }), ("ItemGlasses".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 250f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Iron".into(), 15f64),
("Silicon".into(), 10f64)] .into_iter().collect() }),
("ItemHardBackpack".into(), Recipe { tier : MachineTier::TierTwo,
time : 30f64, energy : 1500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Astroloy".into(), 5f64), ("Steel".into(), 15f64),
("Stellite".into(), 5f64)] .into_iter().collect() }),
("ItemHardJetpack".into(), Recipe { tier : MachineTier::TierTwo, time
: 40f64, energy : 1750f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 4i64,
reagents : vec![("Astroloy".into(), 8f64), ("Steel".into(), 20f64),
("Stellite".into(), 8f64), ("Waspaloy".into(), 8f64)] .into_iter()
.collect() }), ("ItemHardMiningBackPack".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Invar".into(), 1f64), ("Steel"
.into(), 6f64)] .into_iter().collect() }), ("ItemHardSuit".into(),
Recipe { tier : MachineTier::TierTwo, time : 60f64, energy : 3000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Astroloy".into(),
10f64), ("Steel".into(), 20f64), ("Stellite".into(), 2f64)]
.into_iter().collect() }), ("ItemHardsuitHelmet".into(), Recipe {
tier : MachineTier::TierTwo, time : 50f64, energy : 1750f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Astroloy".into(),
2f64), ("Steel".into(), 10f64), ("Stellite".into(), 2f64)]
.into_iter().collect() }), ("ItemIgniter".into(), Recipe { tier :
MachineTier::TierOne, time : 1f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Copper".into(), 3f64)]
.into_iter().collect() }), ("ItemJetpackBasic".into(), Recipe { tier
: MachineTier::TierOne, time : 30f64, energy : 1500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Gold".into(), 2f64), ("Lead"
.into(), 5f64), ("Steel".into(), 10f64)] .into_iter().collect() }),
("ItemKitBasket".into(), Recipe { tier : MachineTier::TierOne, time :
1f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 2f64), ("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemLabeller".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Gold".into(), 1f64), ("Iron"
.into(), 2f64)] .into_iter().collect() }), ("ItemMKIIAngleGrinder"
.into(), Recipe { tier : MachineTier::TierTwo, time : 10f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 3i64, reagents :
vec![("Copper".into(), 1f64), ("Electrum".into(), 4f64), ("Iron"
.into(), 3f64)] .into_iter().collect() }), ("ItemMKIIArcWelder"
.into(), Recipe { tier : MachineTier::TierTwo, time : 30f64, energy :
2500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 4i64, reagents :
vec![("Electrum".into(), 14f64), ("Invar".into(), 5f64), ("Solder"
.into(), 10f64), ("Steel".into(), 10f64)] .into_iter().collect() }),
("ItemMKIICrowbar".into(), Recipe { tier : MachineTier::TierTwo, time
: 10f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Electrum".into(), 5f64), ("Iron".into(), 5f64)]
.into_iter().collect() }), ("ItemMKIIDrill".into(), Recipe { tier :
MachineTier::TierTwo, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 5f64),
("Electrum".into(), 5f64), ("Iron".into(), 5f64)] .into_iter()
.collect() }), ("ItemMKIIDuctTape".into(), Recipe { tier :
MachineTier::TierTwo, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Electrum".into(), 1f64),
("Iron".into(), 2f64)] .into_iter().collect() }),
("ItemMKIIMiningDrill".into(), Recipe { tier : MachineTier::TierTwo,
time : 5f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 3i64,
reagents : vec![("Copper".into(), 2f64), ("Electrum".into(), 5f64),
("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemMKIIScrewdriver".into(), Recipe { tier : MachineTier::TierTwo,
time : 10f64, energy : 500f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Electrum".into(), 2f64), ("Iron".into(), 2f64)]
.into_iter().collect() }), ("ItemMKIIWireCutters".into(), Recipe {
tier : MachineTier::TierTwo, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 2i64, reagents : vec![("Electrum".into(),
5f64), ("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemMKIIWrench".into(), Recipe { tier : MachineTier::TierTwo, time
: 10f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Electrum".into(), 3f64), ("Iron".into(), 3f64)]
.into_iter().collect() }), ("ItemMarineBodyArmor".into(), Recipe {
tier : MachineTier::TierOne, time : 60f64, energy : 3000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Nickel".into(),
10f64), ("Silicon".into(), 10f64), ("Steel".into(), 20f64)]
.into_iter().collect() }), ("ItemMarineHelmet".into(), Recipe { tier
: MachineTier::TierOne, time : 45f64, energy : 1750f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Gold".into(), 4f64), ("Silicon"
.into(), 4f64), ("Steel".into(), 8f64)] .into_iter().collect() }),
("ItemMiningBackPack".into(), Recipe { tier : MachineTier::TierOne,
time : 8f64, energy : 800f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 6f64)] .into_iter().collect() }),
("ItemMiningBelt".into(), Recipe { tier : MachineTier::TierOne, time
: 5f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Iron".into(), 3f64)] .into_iter().collect() }),
("ItemMiningBeltMKII".into(), Recipe { tier : MachineTier::TierTwo,
time : 10f64, energy : 1000f64, temperature : RecipeRange { start :
1f64, stop : 80000f64, is_valid : false }, pressure : RecipeRange {
start : 0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Constantan".into(), 5f64), ("Steel".into(), 10f64)]
.into_iter().collect() }), ("ItemMiningDrill".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron"
.into(), 3f64)] .into_iter().collect() }), ("ItemMiningDrillHeavy"
.into(), Recipe { tier : MachineTier::TierTwo, time : 30f64, energy :
2500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 4i64, reagents :
vec![("Electrum".into(), 5f64), ("Invar".into(), 10f64), ("Solder"
.into(), 10f64), ("Steel".into(), 10f64)] .into_iter().collect() }),
("ItemMiningDrillPneumatic".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 2000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Copper".into(), 4f64),
("Solder".into(), 4f64), ("Steel".into(), 6f64)] .into_iter()
.collect() }), ("ItemMkIIToolbelt".into(), Recipe { tier :
MachineTier::TierTwo, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Constantan".into(), 5f64),
("Iron".into(), 3f64)] .into_iter().collect() }), ("ItemNVG".into(),
Recipe { tier : MachineTier::TierOne, time : 45f64, energy : 2750f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Hastelloy"
.into(), 10f64), ("Silicon".into(), 5f64), ("Steel".into(), 5f64)]
.into_iter().collect() }), ("ItemPickaxe".into(), Recipe { tier :
MachineTier::TierOne, time : 1f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 1f64), ("Iron"
.into(), 2f64)] .into_iter().collect() }), ("ItemPlantSampler"
.into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 5f64), ("Iron".into(), 5f64)] .into_iter()
.collect() }), ("ItemRemoteDetonator".into(), Recipe { tier :
MachineTier::TierOne, time : 4.5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Gold".into(), 1f64), ("Iron"
.into(), 3f64)] .into_iter().collect() }),
("ItemReusableFireExtinguisher".into(), Recipe { tier :
MachineTier::TierOne, time : 20f64, energy : 1000f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Steel".into(), 5f64)]
.into_iter().collect() }), ("ItemRoadFlare".into(), Recipe { tier :
MachineTier::TierOne, time : 1f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 1f64)]
.into_iter().collect() }), ("ItemScrewdriver".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 2f64)]
.into_iter().collect() }), ("ItemSensorLenses".into(), Recipe { tier
: MachineTier::TierTwo, time : 45f64, energy : 3500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 3i64, reagents : vec![("Inconel".into(), 5f64),
("Silicon".into(), 5f64), ("Steel".into(), 5f64)] .into_iter()
.collect() }), ("ItemSensorProcessingUnitCelestialScanner".into(),
Recipe { tier : MachineTier::TierTwo, time : 15f64, energy : 100f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 4i64, reagents : vec![("Copper".into(),
5f64), ("Gold".into(), 5f64), ("Iron".into(), 5f64), ("Silicon"
.into(), 5f64)] .into_iter().collect() }),
("ItemSensorProcessingUnitMesonScanner".into(), Recipe { tier :
MachineTier::TierTwo, time : 15f64, energy : 100f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 4i64, reagents : vec![("Copper".into(), 5f64), ("Gold"
.into(), 5f64), ("Iron".into(), 5f64), ("Silicon".into(), 5f64)]
.into_iter().collect() }), ("ItemSensorProcessingUnitOreScanner"
.into(), Recipe { tier : MachineTier::TierTwo, time : 15f64, energy :
100f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 4i64, reagents :
vec![("Copper".into(), 5f64), ("Gold".into(), 5f64), ("Iron".into(),
5f64), ("Silicon".into(), 5f64)] .into_iter().collect() }),
("ItemSpaceHelmet".into(), Recipe { tier : MachineTier::TierOne, time
: 15f64, energy : 500f64, temperature : RecipeRange { start : 1f64,
stop : 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 2i64,
reagents : vec![("Copper".into(), 2f64), ("Gold".into(), 2f64)]
.into_iter().collect() }), ("ItemSpacepack".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Iron"
.into(), 5f64)] .into_iter().collect() }), ("ItemSprayCanBlack"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanBlue"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanBrown"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanGreen"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanGrey"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanKhaki"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanOrange"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanPink"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanPurple"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents : vec![("Iron"
.into(), 1f64)] .into_iter().collect() }), ("ItemSprayCanRed".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
1f64)] .into_iter().collect() }), ("ItemSprayCanWhite".into(), Recipe
{ tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
1f64)] .into_iter().collect() }), ("ItemSprayCanYellow".into(),
Recipe { tier : MachineTier::TierOne, time : 5f64, energy : 500f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 1i64, reagents : vec![("Iron".into(),
1f64)] .into_iter().collect() }), ("ItemSprayGun".into(), Recipe {
tier : MachineTier::TierTwo, time : 10f64, energy : 2000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Invar".into(),
5f64), ("Silicon".into(), 10f64), ("Steel".into(), 10f64)]
.into_iter().collect() }), ("ItemTerrainManipulator".into(), Recipe {
tier : MachineTier::TierOne, time : 15f64, energy : 600f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 3i64, reagents : vec![("Copper".into(),
3f64), ("Gold".into(), 2f64), ("Iron".into(), 5f64)] .into_iter()
.collect() }), ("ItemToolBelt".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 3f64)]
.into_iter().collect() }), ("ItemWearLamp".into(), Recipe { tier :
MachineTier::TierOne, time : 15f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Copper".into(), 2f64), ("Gold"
.into(), 2f64)] .into_iter().collect() }), ("ItemWeldingTorch"
.into(), Recipe { tier : MachineTier::TierOne, time : 10f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 2i64, reagents :
vec![("Copper".into(), 1f64), ("Iron".into(), 3f64)] .into_iter()
.collect() }), ("ItemWireCutters".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 3f64)]
.into_iter().collect() }), ("ItemWrench".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Iron".into(), 3f64)]
.into_iter().collect() }), ("ToyLuna".into(), Recipe { tier :
MachineTier::TierOne, time : 10f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 2i64, reagents : vec![("Gold".into(), 1f64), ("Iron"
.into(), 5f64)] .into_iter().collect() }), ("UniformCommander"
.into(), Recipe { tier : MachineTier::TierOne, time : 5f64, energy :
500f64, temperature : RecipeRange { start : 1f64, stop : 80000f64,
is_valid : false }, pressure : RecipeRange { start : 0f64, stop :
1000000f64, is_valid : false }, required_mix : RecipeGasMix { rule :
0i64, is_any : true, is_any_to_remove : false, reagents : vec![]
.into_iter().collect() }, count_types : 1i64, reagents :
vec![("Silicon".into(), 25f64)] .into_iter().collect() }),
("UniformMarine".into(), Recipe { tier : MachineTier::TierOne, time :
5f64, energy : 500f64, temperature : RecipeRange { start : 1f64, stop
: 80000f64, is_valid : false }, pressure : RecipeRange { start :
0f64, stop : 1000000f64, is_valid : false }, required_mix :
RecipeGasMix { rule : 0i64, is_any : true, is_any_to_remove : false,
reagents : vec![] .into_iter().collect() }, count_types : 1i64,
reagents : vec![("Silicon".into(), 10f64)] .into_iter().collect() }),
("UniformOrangeJumpSuit".into(), Recipe { tier :
MachineTier::TierOne, time : 5f64, energy : 500f64, temperature :
RecipeRange { start : 1f64, stop : 80000f64, is_valid : false },
pressure : RecipeRange { start : 0f64, stop : 1000000f64, is_valid :
false }, required_mix : RecipeGasMix { rule : 0i64, is_any : true,
is_any_to_remove : false, reagents : vec![] .into_iter().collect() },
count_types : 1i64, reagents : vec![("Silicon".into(), 10f64)]
.into_iter().collect() }), ("WeaponPistolEnergy".into(), Recipe {
tier : MachineTier::TierTwo, time : 120f64, energy : 3000f64,
temperature : RecipeRange { start : 1f64, stop : 80000f64, is_valid :
false }, pressure : RecipeRange { start : 0f64, stop : 1000000f64,
is_valid : false }, required_mix : RecipeGasMix { rule : 0i64, is_any
: true, is_any_to_remove : false, reagents : vec![] .into_iter()
.collect() }, count_types : 4i64, reagents : vec![("Electrum".into(),
20f64), ("Gold".into(), 10f64), ("Solder".into(), 10f64), ("Steel"
.into(), 10f64)] .into_iter().collect() }), ("WeaponRifleEnergy"
.into(), Recipe { tier : MachineTier::TierTwo, time : 240f64, energy
: 10000f64, temperature : RecipeRange { start : 1f64, stop :
80000f64, is_valid : false }, pressure : RecipeRange { start : 0f64,
stop : 1000000f64, is_valid : false }, required_mix : RecipeGasMix {
rule : 0i64, is_any : true, is_any_to_remove : false, reagents :
vec![] .into_iter().collect() }, count_types : 6i64, reagents :
vec![("Constantan".into(), 10f64), ("Electrum".into(), 20f64),
("Gold".into(), 10f64), ("Invar".into(), 10f64), ("Solder".into(),
10f64), ("Steel".into(), 20f64)] .into_iter().collect() })
]
.into_iter()
.collect(),
}),
memory: MemoryInfo {
instructions: Some(
vec![
("DeviceSetLock".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>LOCK_STATE</color> | <color=orange>BOOL_8</color> |\r\n| <color=grey>16-63 </color> | <color=grey>UNUSED</color> | <color=grey>48</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |"
.into(), typ : "PrinterInstruction".into(), value : 6i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "LOCK_STATE".into(), typ :
InstructionPartType::Bool8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(48u32) }] .into_iter().collect() }),
("EjectAllReagents".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 8i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() }),
("EjectReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-39 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>40-63 </color> | <color=grey>UNUSED</color> | <color=grey>24</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |"
.into(), typ : "PrinterInstruction".into(), value : 7i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 39u32)) }, name : "REAGENT_HASH".into(), typ :
InstructionPartType::Int32 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((40u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(24u32) }] .into_iter().collect() }),
("ExecuteRecipe".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>PREFAB_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 2i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "PREFAB_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("JumpIfNextInvalid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 4i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("JumpToAddress".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>STACK_ADDRESS</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 5i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "STACK_ADDRESS".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("MissingRecipeReagent".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 54 TO 62</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-15 </color> | <color=yellow>QUANTITY_CEIL</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>16-47 </color> | <color=yellow>REAGENT_HASH</color> | <color=orange>INT_32</color> |\r\n| <color=grey>48-63 </color> | <color=grey>UNUSED</color> | <color=grey>16</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |"
.into(), typ : "PrinterInstruction".into(), value : 9i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((54u32,
Some(62u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 15u32)) }, name : "QUANTITY_CEIL".into(), typ :
InstructionPartType::Byte8 }, InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((16u32, 47u32))
}, name : "REAGENT_HASH".into(), typ : InstructionPartType::Int32
}, InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((48u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(16u32) }] .into_iter().collect() }),
("StackPointer".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESS 63</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=red>8-23 </color> | <color=yellow>INDEX</color> | <color=orange>USHORT_16</color> |\r\n| <color=grey>24-63 </color> | <color=grey>UNUSED</color> | <color=grey>40</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |"
.into(), typ : "PrinterInstruction".into(), value : 1i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((63u32, None)) },
parts : vec![InstructionPart { range : { trait FromTuple < T >:
Sized { fn from_tuple(tuple : T) -> Self; } impl < T > FromTuple
< (T, T,) > for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,))
-> Self { [tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0,
T1,) > for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,))
-> Self { tuple } } #[inline] fn convert < T0, T1, Out :
FromTuple < (T0, T1,) >> (tuple : (T0, T1,)) -> Out {
Out::from_tuple(tuple) } convert((0u32, 7u32)) }, name :
"OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 23u32)) }, name : "INDEX".into(), typ :
InstructionPartType::UShort16 }, InstructionPart { range : {
trait FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self;
} impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((24u32, 63u32))
}, name : "UNUSED".into(), typ :
InstructionPartType::Unused(40u32) }] .into_iter().collect() }),
("WaitUntilNextValid".into(), Instruction { description :
"| <color=grey>VALID ONLY AT ADDRESSES 0 TO 53</color> |\r\n<color=white>| <color=red>0-7 </color> | <color=yellow>OP_CODE</color> | <color=orange>BYTE_8</color> |\r\n| <color=grey>8-63 </color> | <color=grey>UNUSED</color> | <color=grey>56</color> |</color>"
.into(), description_stripped :
"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |"
.into(), typ : "PrinterInstruction".into(), value : 3i64, valid :
{ trait FromTuple < T >: Sized { fn from_tuple(tuple : T) ->
Self; } impl < T > FromTuple < (T, T,) > for [T; 2] { #[inline]
fn from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } }
impl < T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline]
fn from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32,
Some(53u32))) }, parts : vec![InstructionPart { range : { trait
FromTuple < T >: Sized { fn from_tuple(tuple : T) -> Self; } impl
< T > FromTuple < (T, T,) > for [T; 2] { #[inline] fn
from_tuple(tuple : (T, T,)) -> Self { [tuple.0, tuple.1] } } impl
< T0, T1 > FromTuple < (T0, T1,) > for (T0, T1,) { #[inline] fn
from_tuple(tuple : (T0, T1,)) -> Self { tuple } } #[inline] fn
convert < T0, T1, Out : FromTuple < (T0, T1,) >> (tuple : (T0,
T1,)) -> Out { Out::from_tuple(tuple) } convert((0u32, 7u32)) },
name : "OP_CODE".into(), typ : InstructionPartType::Byte8 },
InstructionPart { range : { trait FromTuple < T >: Sized { fn
from_tuple(tuple : T) -> Self; } impl < T > FromTuple < (T, T,) >
for [T; 2] { #[inline] fn from_tuple(tuple : (T, T,)) -> Self {
[tuple.0, tuple.1] } } impl < T0, T1 > FromTuple < (T0, T1,) >
for (T0, T1,) { #[inline] fn from_tuple(tuple : (T0, T1,)) ->
Self { tuple } } #[inline] fn convert < T0, T1, Out : FromTuple <
(T0, T1,) >> (tuple : (T0, T1,)) -> Out { Out::from_tuple(tuple)
} convert((8u32, 63u32)) }, name : "UNUSED".into(), typ :
InstructionPartType::Unused(56u32) }] .into_iter().collect() })
]
.into_iter()
.collect(),
),
memory_access: MemoryAccess::ReadWrite,
memory_size: 64u32,
},
}
.into(),
);
map.insert(
1473807953i32,
StructureSlotsTemplate {
templateType: "StructureSlots".into(),
prefab: PrefabInfo {
prefab_name: "StructureTorpedoRack".into(),
prefab_hash: 1473807953i32,
desc: "".into(),
name: "Torpedo Rack".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "Torpedo".into(), typ : Class::Torpedo }, SlotInfo {
name : "Torpedo".into(), typ : Class::Torpedo }, SlotInfo { name :
"Torpedo".into(), typ : Class::Torpedo }, SlotInfo { name : "Torpedo"
.into(), typ : Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ
: Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ :
Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ :
Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ :
Class::Torpedo }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1570931620i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTraderWaypoint".into(),
prefab_hash: 1570931620i32,
desc: "".into(),
name: "Trader Waypoint".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1423212473i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTransformer".into(),
prefab_hash: -1423212473i32,
desc: "The large <link=Norsec><color=#0080FFFF>Norsec</color></link> transformer is a critical component of extended <link=ElectronicPage><color=#0080FFFF>electrical</color></link> networks, controlling the maximum power that will flow down a cable. To prevent overloading, output can be set from 0 to 50,000W. \nNote that transformers operate as data isolators, preventing data flowing into any network beyond it."
.into(),
name: "Transformer (Large)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1065725831i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTransformerMedium".into(),
prefab_hash: -1065725831i32,
desc: "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading <link=ElectronicPage><color=#0080FFFF>electrical</color></link> systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it."
.into(),
name: "Transformer (Medium)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
833912764i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTransformerMediumReversed".into(),
prefab_hash: 833912764i32,
desc: "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading <link=ElectronicPage><color=#0080FFFF>electrical</color></link> systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it."
.into(),
name: "Transformer Reversed (Medium)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-890946730i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTransformerSmall".into(),
prefab_hash: -890946730i32,
desc: "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading <link=ElectronicPage><color=#0080FFFF>electrical</color></link> systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it."
.into(),
name: "Transformer (Small)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::Output }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1054059374i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTransformerSmallReversed".into(),
prefab_hash: 1054059374i32,
desc: "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading <link=ElectronicPage><color=#0080FFFF>electrical</color></link> systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it."
.into(),
name: "Transformer Reversed (Small)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1282191063i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTurbineGenerator".into(),
prefab_hash: 1282191063i32,
desc: "".into(),
name: "Turbine Generator".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PowerGeneration, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1310794736i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureTurboVolumePump".into(),
prefab_hash: 1310794736i32,
desc: "Shifts 10 times more gas than a basic <link=ThingStructureVolumePump><color=green>Volume Pump</color></link>, with a mode that can be set to flow in either direction."
.into(),
name: "Turbo Volume Pump (Gas)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting,
MemoryAccess::ReadWrite), (LogicType::Maximum, MemoryAccess::Read),
(LogicType::Ratio, MemoryAccess::Read), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Right".into()), (1u32, "Left".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Output }, ConnectionInfo
{ typ : ConnectionType::Pipe, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
750118160i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureUnloader".into(),
prefab_hash: 750118160i32,
desc: "The <link=Xigo><color=#0080FFFF>Xigo</color></link> Re:Gurge is a handy unit for unloading any items inserted into it, and feeding them into a chute network. For instance, if you add a full <link=ThingItemMiningBelt><color=green>Mining Belt</color></link>, the Re:Gurge will empty a mining belt of its contents, insert them into the chute network, then insert the mining belt itself. A <link=ThingStructureSorter><color=green>Sorter</color></link> is recommended to reclaim the mining belt.\n\nOutput = 0 exporting the main item\nOutput = 1 exporting items inside and eventually the main item."
.into(),
name: "Unloader".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect()), (1u32, vec![(LogicSlotType::Occupied,
MemoryAccess::Read), (LogicSlotType::OccupantHash,
MemoryAccess::Read), (LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On,
MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::Output,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Automatic".into()), (1u32, "Logic".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Chute,
role : ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1622183451i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureUprightWindTurbine".into(),
prefab_hash: 1622183451i32,
desc: "Norsec\'s basic wind turbine is an easily fabricated, rapidly deployed design that is strong enough to withstand the worst that environments can throw at it. \nWhile the wind turbine is optimized to produce power even on low atmosphere worlds (up to 200W), it performs best in denser environments. Output varies with wind speed, and during storms, may increase dramatically (up to 800W), so be careful to design your power networks with that in mind."
.into(),
name: "Upright Wind Turbine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PowerGeneration, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-692036078i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureValve".into(),
prefab_hash: -692036078i32,
desc: "".into(),
name: "Valve".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Pipe,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-443130773i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureVendingMachine".into(),
prefab_hash: -443130773i32,
desc: "The <link=Xigo><color=#0080FFFF>Xigo-designed</color></link> \'Slot Mate\' vending machine allows storage of almost any item, while also operating as a distribution point for working with <link=TradingPage><color=#0080FFFF>Traders</color></link>. You cannot trade without a vending machine, or its more advanced equivalent, the <link=ThingStructureRefrigeratedVendingMachine><color=green>Refrigerated Vending Machine</color></link>. Each vending machine can hold up to 100 stacks."
.into(),
name: "Vending Machine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter()
.collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![]
.into_iter().collect()), (4u32, vec![] .into_iter().collect()),
(5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter()
.collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![]
.into_iter().collect()), (9u32, vec![] .into_iter().collect()),
(10u32, vec![] .into_iter().collect()), (11u32, vec![] .into_iter()
.collect()), (12u32, vec![] .into_iter().collect()), (13u32, vec![]
.into_iter().collect()), (14u32, vec![] .into_iter().collect()),
(15u32, vec![] .into_iter().collect()), (16u32, vec![] .into_iter()
.collect()), (17u32, vec![] .into_iter().collect()), (18u32, vec![]
.into_iter().collect()), (19u32, vec![] .into_iter().collect()),
(20u32, vec![] .into_iter().collect()), (21u32, vec![] .into_iter()
.collect()), (22u32, vec![] .into_iter().collect()), (23u32, vec![]
.into_iter().collect()), (24u32, vec![] .into_iter().collect()),
(25u32, vec![] .into_iter().collect()), (26u32, vec![] .into_iter()
.collect()), (27u32, vec![] .into_iter().collect()), (28u32, vec![]
.into_iter().collect()), (29u32, vec![] .into_iter().collect()),
(30u32, vec![] .into_iter().collect()), (31u32, vec![] .into_iter()
.collect()), (32u32, vec![] .into_iter().collect()), (33u32, vec![]
.into_iter().collect()), (34u32, vec![] .into_iter().collect()),
(35u32, vec![] .into_iter().collect()), (36u32, vec![] .into_iter()
.collect()), (37u32, vec![] .into_iter().collect()), (38u32, vec![]
.into_iter().collect()), (39u32, vec![] .into_iter().collect()),
(40u32, vec![] .into_iter().collect()), (41u32, vec![] .into_iter()
.collect()), (42u32, vec![] .into_iter().collect()), (43u32, vec![]
.into_iter().collect()), (44u32, vec![] .into_iter().collect()),
(45u32, vec![] .into_iter().collect()), (46u32, vec![] .into_iter()
.collect()), (47u32, vec![] .into_iter().collect()), (48u32, vec![]
.into_iter().collect()), (49u32, vec![] .into_iter().collect()),
(50u32, vec![] .into_iter().collect()), (51u32, vec![] .into_iter()
.collect()), (52u32, vec![] .into_iter().collect()), (53u32, vec![]
.into_iter().collect()), (54u32, vec![] .into_iter().collect()),
(55u32, vec![] .into_iter().collect()), (56u32, vec![] .into_iter()
.collect()), (57u32, vec![] .into_iter().collect()), (58u32, vec![]
.into_iter().collect()), (59u32, vec![] .into_iter().collect()),
(60u32, vec![] .into_iter().collect()), (61u32, vec![] .into_iter()
.collect()), (62u32, vec![] .into_iter().collect()), (63u32, vec![]
.into_iter().collect()), (64u32, vec![] .into_iter().collect()),
(65u32, vec![] .into_iter().collect()), (66u32, vec![] .into_iter()
.collect()), (67u32, vec![] .into_iter().collect()), (68u32, vec![]
.into_iter().collect()), (69u32, vec![] .into_iter().collect()),
(70u32, vec![] .into_iter().collect()), (71u32, vec![] .into_iter()
.collect()), (72u32, vec![] .into_iter().collect()), (73u32, vec![]
.into_iter().collect()), (74u32, vec![] .into_iter().collect()),
(75u32, vec![] .into_iter().collect()), (76u32, vec![] .into_iter()
.collect()), (77u32, vec![] .into_iter().collect()), (78u32, vec![]
.into_iter().collect()), (79u32, vec![] .into_iter().collect()),
(80u32, vec![] .into_iter().collect()), (81u32, vec![] .into_iter()
.collect()), (82u32, vec![] .into_iter().collect()), (83u32, vec![]
.into_iter().collect()), (84u32, vec![] .into_iter().collect()),
(85u32, vec![] .into_iter().collect()), (86u32, vec![] .into_iter()
.collect()), (87u32, vec![] .into_iter().collect()), (88u32, vec![]
.into_iter().collect()), (89u32, vec![] .into_iter().collect()),
(90u32, vec![] .into_iter().collect()), (91u32, vec![] .into_iter()
.collect()), (92u32, vec![] .into_iter().collect()), (93u32, vec![]
.into_iter().collect()), (94u32, vec![] .into_iter().collect()),
(95u32, vec![] .into_iter().collect()), (96u32, vec![] .into_iter()
.collect()), (97u32, vec![] .into_iter().collect()), (98u32, vec![]
.into_iter().collect()), (99u32, vec![] .into_iter().collect()),
(100u32, vec![] .into_iter().collect()), (101u32, vec![] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio,
MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::RequestHash,
MemoryAccess::ReadWrite), (LogicType::ClearMemory,
MemoryAccess::Write), (LogicType::ExportCount, MemoryAccess::Read),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { name :
"Export".into(), typ : Class::None }, SlotInfo { name : "Storage".into(),
typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage"
.into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ :
Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None },
SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo { name
: "Storage".into(), typ : Class::None }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Chute, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::Chute, role : ConnectionRole::Output },
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-321403609i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureVolumePump".into(),
prefab_hash: -321403609i32,
desc: "The volume pump pumps pumpable gases. It also separates out pipe networks into separate networks."
.into(),
name: "Volume Pump".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Pipe, role : ConnectionRole::Input }, ConnectionInfo
{ typ : ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-858143148i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallArch".into(),
prefab_hash: -858143148i32,
desc: "".into(),
name: "Wall (Arch)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1649708822i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallArchArrow".into(),
prefab_hash: 1649708822i32,
desc: "".into(),
name: "Wall (Arch Arrow)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1794588890i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallArchCornerRound".into(),
prefab_hash: 1794588890i32,
desc: "".into(),
name: "Wall (Arch Corner Round)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1963016580i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallArchCornerSquare".into(),
prefab_hash: -1963016580i32,
desc: "".into(),
name: "Wall (Arch Corner Square)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1281911841i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallArchCornerTriangle".into(),
prefab_hash: 1281911841i32,
desc: "".into(),
name: "Wall (Arch Corner Triangle)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1182510648i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallArchPlating".into(),
prefab_hash: 1182510648i32,
desc: "".into(),
name: "Wall (Arch Plating)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
782529714i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallArchTwoTone".into(),
prefab_hash: 782529714i32,
desc: "".into(),
name: "Wall (Arch Two Tone)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-739292323i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallCooler".into(),
prefab_hash: -739292323i32,
desc: "The <link=Xigo><color=#0080FFFF>Xigo</color></link> Freezy Boi wall cooler complements the wall heater, which can only raise the temperature. The wall cooler functions by drawing heat from the surrounding atmosphere and adding that heat into its pipe network.\nIn order to run the wall cooler properly, you will need to connect pipes to the wall cooler and fill the connected pipe network with any type of gas. The gas\'s heat capacity and volume will determine how fast it reacts to temperature changes.\n\n<size=120%><b>EFFICIENCY</b></size>\nThe higher the difference in temperature between the gas stored in the pipes and the room, the less efficient the wall cooler will be. So to keep the wall cooler running at an acceptable efficiency you will need to get rid of the heat that accumulates in the pipes connected to it. A common practice would be to run the pipes to the outside and use radiators on the outside section of the pipes to get rid of the heat.\nThe less efficient the wall cooler, the less power it consumes. It will consume 1010W at max efficiency. The wall cooler can be controlled by logic chips to run when the temperature hits a certain degree.\n<size=120%><b>ERRORS</b></size>\nIf the wall cooler is flashing an error then it is missing one of the following:\n\n- Pipe connection to the wall cooler.\n- Gas in the connected pipes, or pressure is too low.\n- Atmosphere in the surrounding environment or pressure is too low.\n\nFor more information about how to control temperatures, consult the <link=TemperatureControlPage><color=#0080FFFF>temperature control</color></link> Guides page."
.into(),
name: "Wall Cooler".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Pipe, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1635864154i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallFlat".into(),
prefab_hash: 1635864154i32,
desc: "".into(),
name: "Wall (Flat)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
898708250i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallFlatCornerRound".into(),
prefab_hash: 898708250i32,
desc: "".into(),
name: "Wall (Flat Corner Round)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
298130111i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallFlatCornerSquare".into(),
prefab_hash: 298130111i32,
desc: "".into(),
name: "Wall (Flat Corner Square)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2097419366i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallFlatCornerTriangle".into(),
prefab_hash: 2097419366i32,
desc: "".into(),
name: "Wall (Flat Corner Triangle)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1161662836i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallFlatCornerTriangleFlat".into(),
prefab_hash: -1161662836i32,
desc: "".into(),
name: "Wall (Flat Corner Triangle Flat)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1979212240i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallGeometryCorner".into(),
prefab_hash: 1979212240i32,
desc: "".into(),
name: "Wall (Geometry Corner)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1049735537i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallGeometryStreight".into(),
prefab_hash: 1049735537i32,
desc: "".into(),
name: "Wall (Geometry Straight)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1602758612i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallGeometryT".into(),
prefab_hash: 1602758612i32,
desc: "".into(),
name: "Wall (Geometry T)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1427845483i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallGeometryTMirrored".into(),
prefab_hash: -1427845483i32,
desc: "".into(),
name: "Wall (Geometry T Mirrored)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
24258244i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallHeater".into(),
prefab_hash: 24258244i32,
desc: "The <link=Xigo><color=#0080FFFF>Xigo</color></link> wall heater is a simple device that can be installed on a wall or frame and connected to power. When switched on, it will start heating the surrounding environment. It consumes 1010W of power and can be controlled by logic chips to run when the temperature hits a certain level."
.into(),
name: "Wall Heater".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1287324802i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallIron".into(),
prefab_hash: 1287324802i32,
desc: "".into(),
name: "Iron Wall (Type 1)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1485834215i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallIron02".into(),
prefab_hash: 1485834215i32,
desc: "".into(),
name: "Iron Wall (Type 2)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
798439281i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallIron03".into(),
prefab_hash: 798439281i32,
desc: "".into(),
name: "Iron Wall (Type 3)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1309433134i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallIron04".into(),
prefab_hash: -1309433134i32,
desc: "".into(),
name: "Iron Wall (Type 4)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1492930217i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallLargePanel".into(),
prefab_hash: 1492930217i32,
desc: "".into(),
name: "Wall (Large Panel)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-776581573i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallLargePanelArrow".into(),
prefab_hash: -776581573i32,
desc: "".into(),
name: "Wall (Large Panel Arrow)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1860064656i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallLight".into(),
prefab_hash: -1860064656i32,
desc: "".into(),
name: "Wall Light".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1306415132i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallLightBattery".into(),
prefab_hash: -1306415132i32,
desc: "".into(),
name: "Wall Light (Battery)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1590330637i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedArch".into(),
prefab_hash: 1590330637i32,
desc: "".into(),
name: "Wall (Padded Arch)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1126688298i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedArchCorner".into(),
prefab_hash: -1126688298i32,
desc: "".into(),
name: "Wall (Padded Arch Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1171987947i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedArchLightFittingTop".into(),
prefab_hash: 1171987947i32,
desc: "".into(),
name: "Wall (Padded Arch Light Fitting Top)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1546743960i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedArchLightsFittings".into(),
prefab_hash: -1546743960i32,
desc: "".into(),
name: "Wall (Padded Arch Lights Fittings)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-155945899i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedCorner".into(),
prefab_hash: -155945899i32,
desc: "".into(),
name: "Wall (Padded Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1183203913i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedCornerThin".into(),
prefab_hash: 1183203913i32,
desc: "".into(),
name: "Wall (Padded Corner Thin)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
8846501i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedNoBorder".into(),
prefab_hash: 8846501i32,
desc: "".into(),
name: "Wall (Padded No Border)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
179694804i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedNoBorderCorner".into(),
prefab_hash: 179694804i32,
desc: "".into(),
name: "Wall (Padded No Border Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1611559100i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedThinNoBorder".into(),
prefab_hash: -1611559100i32,
desc: "".into(),
name: "Wall (Padded Thin No Border)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1769527556i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedThinNoBorderCorner".into(),
prefab_hash: 1769527556i32,
desc: "".into(),
name: "Wall (Padded Thin No Border Corner)".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2087628940i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedWindow".into(),
prefab_hash: 2087628940i32,
desc: "".into(),
name: "Wall (Padded Window)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-37302931i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddedWindowThin".into(),
prefab_hash: -37302931i32,
desc: "".into(),
name: "Wall (Padded Window Thin)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
635995024i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPadding".into(),
prefab_hash: 635995024i32,
desc: "".into(),
name: "Wall (Padding)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1243329828i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddingArchVent".into(),
prefab_hash: -1243329828i32,
desc: "".into(),
name: "Wall (Padding Arch Vent)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
2024882687i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddingLightFitting".into(),
prefab_hash: 2024882687i32,
desc: "".into(),
name: "Wall (Padding Light Fitting)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1102403554i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPaddingThin".into(),
prefab_hash: -1102403554i32,
desc: "".into(),
name: "Wall (Padding Thin)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
26167457i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallPlating".into(),
prefab_hash: 26167457i32,
desc: "".into(),
name: "Wall (Plating)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
619828719i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallSmallPanelsAndHatch".into(),
prefab_hash: 619828719i32,
desc: "".into(),
name: "Wall (Small Panels And Hatch)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-639306697i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallSmallPanelsArrow".into(),
prefab_hash: -639306697i32,
desc: "".into(),
name: "Wall (Small Panels Arrow)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
386820253i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallSmallPanelsMonoChrome".into(),
prefab_hash: 386820253i32,
desc: "".into(),
name: "Wall (Small Panels Mono Chrome)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1407480603i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallSmallPanelsOpen".into(),
prefab_hash: -1407480603i32,
desc: "".into(),
name: "Wall (Small Panels Open)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
1709994581i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallSmallPanelsTwoTone".into(),
prefab_hash: 1709994581i32,
desc: "".into(),
name: "Wall (Small Panels Two Tone)".into(),
},
structure: StructureInfo { small_grid: false },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1177469307i32,
StructureTemplate {
templateType: "Structure".into(),
prefab: PrefabInfo {
prefab_name: "StructureWallVent".into(),
prefab_hash: -1177469307i32,
desc: "Used to mix atmospheres passively between two walls.".into(),
name: "Wall Vent".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-1178961954i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWaterBottleFiller".into(),
prefab_hash: -1178961954i32,
desc: "".into(),
name: "Water Bottle Filler".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Error, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle },
SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1433754995i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWaterBottleFillerBottom".into(),
prefab_hash: 1433754995i32,
desc: "".into(),
name: "Water Bottle Filler Bottom".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Error, MemoryAccess::Read), (LogicType::Activate,
MemoryAccess::ReadWrite), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle },
SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-756587791i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWaterBottleFillerPowered".into(),
prefab_hash: -756587791i32,
desc: "".into(),
name: "Waterbottle Filler".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle },
SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Input }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1986658780i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWaterBottleFillerPoweredBottom".into(),
prefab_hash: 1986658780i32,
desc: "".into(),
name: "Waterbottle Filler".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect()), (1u32,
vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read),
(LogicSlotType::Pressure, MemoryAccess::Read),
(LogicSlotType::Temperature, MemoryAccess::Read),
(LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::Volume, MemoryAccess::Read), (LogicSlotType::Open,
MemoryAccess::ReadWrite), (LogicSlotType::SortingClass,
MemoryAccess::Read), (LogicSlotType::ReferenceId,
MemoryAccess::Read)] .into_iter().collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Activate, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![
SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle },
SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }
]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-517628750i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWaterDigitalValve".into(),
prefab_hash: -517628750i32,
desc: "".into(),
name: "Liquid Digital Valve".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::PowerAndData, role :
ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
433184168i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWaterPipeMeter".into(),
prefab_hash: 433184168i32,
desc: "".into(),
name: "Liquid Pipe Meter".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![].into_iter().collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
887383294i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWaterPurifier".into(),
prefab_hash: 887383294i32,
desc: "Cleans <link=GasPollutedWater><color=#44AD83>Polluted Water</color></link> and outputs <link=GasWater><color=#44AD83>Water</color></link>. The purification process requires <link=ThingItemCharcoal><color=green>Charcoal</color></link> which can be added to the machine via the import bin. The procesing throughput can be improved by increasing the gas pressure of the input pipe relative to the gas pressure of the output pipe."
.into(),
name: "Water Purifier".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![(0u32, vec![] .into_iter().collect())]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::ClearMemory, MemoryAccess::Write),
(LogicType::ImportCount, MemoryAccess::Read), (LogicType::PrefabHash,
MemoryAccess::Read), (LogicType::ReferenceId, MemoryAccess::Read),
(LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Import".into(), typ : Class::Ore }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PipeLiquid, role : ConnectionRole::Input },
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::Output }, ConnectionInfo { typ :
ConnectionType::Power, role : ConnectionRole::None }, ConnectionInfo
{ typ : ConnectionType::Chute, role : ConnectionRole::Input }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-1369060582i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWaterWallCooler".into(),
prefab_hash: -1369060582i32,
desc: "".into(),
name: "Liquid Wall Cooler".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Class,
MemoryAccess::Read), (LogicSlotType::MaxQuantity,
MemoryAccess::Read), (LogicSlotType::PrefabHash, MemoryAccess::Read),
(LogicSlotType::SortingClass, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Error,
MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite),
(LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::Maximum,
MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read),
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::RequiredPower,
MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }]
.into_iter()
.collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::PipeLiquid, role :
ConnectionRole::None }, ConnectionInfo { typ :
ConnectionType::PowerAndData, role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: false,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
1997212478i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWeatherStation".into(),
prefab_hash: 1997212478i32,
desc: "0.NoStorm\n1.StormIncoming\n2.InStorm".into(),
name: "Weather Station".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Mode,
MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read),
(LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::RequiredPower, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read),
(LogicType::NextWeatherEventTime, MemoryAccess::Read),
(LogicType::ReferenceId, MemoryAccess::Read), (LogicType::NameHash,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![
(0u32, "NoStorm".into()), (1u32, "StormIncoming".into()), (2u32,
"InStorm".into())
]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Data, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Power,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: true,
has_atmosphere: false,
has_color_state: false,
has_lock_state: true,
has_mode_state: true,
has_on_off_state: true,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
-2082355173i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
prefab: PrefabInfo {
prefab_name: "StructureWindTurbine".into(),
prefab_hash: -2082355173i32,
desc: "The Stationeers wind turbine was first designed by Norsec atmospheric engineers, looking to create a wind-driven power generation system that would operate even on exceedingly low atmosphere worlds. The ultra-light blades respond to exceedingly low atmospheric densities, while being strong enough to function even under huge strain in much more demanding environments.\nWhile the wind turbine is optimized to produce power (up to 500W) even on low atmosphere worlds, it performs best in denser environments. Output varies with wind speed and, during storms, may increase dramatically (up to 10,000W), so be careful to design your power networks with that in mind."
.into(),
name: "Wind Turbine".into(),
},
structure: StructureInfo { small_grid: true },
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![].into_iter().collect(),
logic_types: vec![
(LogicType::PowerGeneration, MemoryAccess::Read),
(LogicType::PrefabHash, MemoryAccess::Read), (LogicType::ReferenceId,
MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![].into_iter().collect(),
device: DeviceInfo {
connection_list: vec![
ConnectionInfo { typ : ConnectionType::Power, role :
ConnectionRole::None }, ConnectionInfo { typ : ConnectionType::Data,
role : ConnectionRole::None }
]
.into_iter()
.collect(),
device_pins_length: None,
has_activate_state: false,
has_atmosphere: false,
has_color_state: false,
has_lock_state: false,
has_mode_state: false,
has_on_off_state: false,
has_open_state: false,
has_reagents: false,
},
}
.into(),
);
map.insert(
2056377335i32,
StructureLogicDeviceTemplate {
templateType: "StructureLogicDevice".into(),
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 {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ToolPrinterMod".into(),
prefab_hash: 1700018136i32,
desc: "Apply to an <link=ThingStructureToolManufactory><color=green>Tool Manufactory</color></link> with a <link=ThingItemWeldingTorch><color=green>Welding Torch</color></link> or <link=ThingItemArcWelder><color=green>Arc Welder</color></link> to upgrade for increased processing speed and more recipe options."
.into(),
name: "Tool Printer Mod".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
94730034i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "ToyLuna".into(),
prefab_hash: 94730034i32,
desc: "".into(),
name: "Toy Luna".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map.insert(
-2083426457i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "UniformCommander".into(),
prefab_hash: -2083426457i32,
desc: "".into(),
name: "Uniform Commander".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Uniform,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "Access Card".into(), typ
: Class::AccessCard }, SlotInfo { name : "Access Card".into(), typ :
Class::AccessCard }, SlotInfo { name : "Credit Card".into(), typ :
Class::CreditCard }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-48342840i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "UniformMarine".into(),
prefab_hash: -48342840i32,
desc: "".into(),
name: "Marine Uniform".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Uniform,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "Access Card".into(), typ
: Class::AccessCard }, SlotInfo { name : "Credit Card".into(), typ :
Class::CreditCard }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
810053150i32,
ItemSlotsTemplate {
templateType: "ItemSlots".into(),
prefab: PrefabInfo {
prefab_name: "UniformOrangeJumpSuit".into(),
prefab_hash: 810053150i32,
desc: "".into(),
name: "Jump Suit (Orange)".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Uniform,
sorting_class: SortingClass::Clothing,
},
thermal_info: None,
internal_atmo_info: None,
slots: vec![
SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : ""
.into(), typ : Class::None }, SlotInfo { name : "Access Card".into(), typ
: Class::AccessCard }, SlotInfo { name : "Credit Card".into(), typ :
Class::CreditCard }
]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
789494694i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "WeaponEnergy".into(),
prefab_hash: 789494694i32,
desc: "".into(),
name: "Weapon Energy".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::On, MemoryAccess::ReadWrite), (LogicType::ReferenceId,
MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: None,
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-385323479i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "WeaponPistolEnergy".into(),
prefab_hash: -385323479i32,
desc: "0.Stun\n1.Kill".into(),
name: "Energy Pistol".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Stun".into()), (1u32, "Kill".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
1154745374i32,
ItemLogicTemplate {
templateType: "ItemLogic".into(),
prefab: PrefabInfo {
prefab_name: "WeaponRifleEnergy".into(),
prefab_hash: 1154745374i32,
desc: "0.Stun\n1.Kill".into(),
name: "Energy Rifle".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::None,
sorting_class: SortingClass::Tools,
},
thermal_info: None,
internal_atmo_info: None,
logic: LogicInfo {
logic_slot_types: vec![
(0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read),
(LogicSlotType::OccupantHash, MemoryAccess::Read),
(LogicSlotType::Quantity, MemoryAccess::Read),
(LogicSlotType::Damage, MemoryAccess::Read), (LogicSlotType::Charge,
MemoryAccess::Read), (LogicSlotType::ChargeRatio,
MemoryAccess::Read), (LogicSlotType::Class, MemoryAccess::Read),
(LogicSlotType::MaxQuantity, MemoryAccess::Read),
(LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter()
.collect())
]
.into_iter()
.collect(),
logic_types: vec![
(LogicType::Power, MemoryAccess::Read), (LogicType::Open,
MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::ReadWrite),
(LogicType::Error, MemoryAccess::Read), (LogicType::Lock,
MemoryAccess::ReadWrite), (LogicType::On, MemoryAccess::ReadWrite),
(LogicType::ReferenceId, MemoryAccess::Read)
]
.into_iter()
.collect(),
modes: Some(
vec![(0u32, "Stun".into()), (1u32, "Kill".into())]
.into_iter()
.collect(),
),
transmission_receiver: false,
wireless_logic: false,
circuit_holder: false,
},
slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }]
.into_iter()
.collect(),
}
.into(),
);
map.insert(
-1102977898i32,
ItemTemplate {
templateType: "Item".into(),
prefab: PrefabInfo {
prefab_name: "WeaponTorpedo".into(),
prefab_hash: -1102977898i32,
desc: "".into(),
name: "Torpedo".into(),
},
item: ItemInfo {
consumable: false,
filter_type: None,
ingredient: false,
max_quantity: 1u32,
reagents: None,
slot_class: Class::Torpedo,
sorting_class: SortingClass::Default,
},
thermal_info: None,
internal_atmo_info: None,
}
.into(),
);
map
}